MyBatis不使用布尔映射
我只是想用Mybatis映射一个布尔值,但我遇到了问题。 首先,我将向您展示所涉及的部分:
XML File:
Java类:
public class DestinationTypeDTO { private long destinationTypeId; private String description; private boolean available; public long getDestinationTypeId() { return destinationTypeId; } public void setDestinationTypeId(long destinationTypeId) { this.destinationTypeId = destinationTypeId; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public boolean isAvailable() { return available; } public void setAvailable(boolean available) { this.available = available; } }
但是,我收到此错误日志:
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: Could not set property 'isAvailable' of '....DestinationTypeDTO@bbd76bf' with value 'true' Cause: org.apache.ibatis.reflection.ReflectionException: There is no setter for property named 'isAvailable' in 'class ....DestinationTypeDTO'
我花了好几个小时试图找到正在发生的事情,但没有成功。 任何提示?
感谢大家。
将javaType="boolean"
更改为java.lang.Boolean
并指定property="available"
在你的类中更改private boolean available;
to private Boolean isAvailable;
并添加getter / setter
public void setIsAvailable(Boolean available) { this.available = available; } public Boolean getIsAvailable() { return available; }
更改你的setter,ibatis期望bojo名称标准格式为pojo: –
public void setIsAvailable(boolean available) { this.available = available; }
您的数据库列名为“is_available”,并且您的属性名为“available”,这就是映射不起作用的原因,您有两个解决方案:
-
将列的名称更改为“available”或更改属性“is_available”的名称(对Java不适用)
-
在sql查询中使用“is_available as available”。