我的一个数据模型类
@EqualsAndHashCode(callSuper = false)
@TableName("datasync")
public class DataSync{
public DataSync(String cat, int tot){
category = cat;
total = tot;
}
private Integer id;//
private String category;//
private Integer total;//
}
再java中,如果定义了一个构造函数,那么就不会存在缺省的那个无参数的构造函数。
这样ibatis在select语句后,把数据库内容映射到对象时,会先用构造函数创建对象
它只能选择这个自定义的函数,并且会按照字段顺序来映射
所以,id映射给cat,category映射给tot
第一个映射没问题,整型可以转换为字符串,第二个就报错,说字符串没法转换为整型
正确的解决办法是,再追加一个无参数的构造函数
public DataSync(){
}
还有一个歪门邪道的解决办法是把自定义函数改变一下
public DataSync(int tot, String cat){
category = cat;
total = tot;
}
这样字段按照顺序映射的时候,类型正好对上
有同学问,那这样id的值给了total,也不对啊!!!
可我做了实验,字段的值并没有问题,看来ibatis再构造出一个对象以后,还是用反射机制把各个属性重新赋值了一遍

被折叠的 条评论
为什么被折叠?



