java的ibatis的数据模型类自定义构造函数问题

我的一个数据模型类

@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再构造出一个对象以后,还是用反射机制把各个属性重新赋值了一遍
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值