Bean中漏写set方法导致:common-dbutils的QueryRunner.query方法返回对象的部分属性为空

在写代码时发现前后端传递的Book对象的属性:id一直为空,导致根据Book.id进行的curd业务实现失败,检查了dao、service、servlet代码都没有异常,设想也许是在查询获取数据库中Book数据的相关代码有问题,检查了一下对应的JDBC代码都没有发现问题,于是只能通过调试dao层代码寻找问题来源

在调试QueryRunner.query方法时,发现底层的反射代码在BeanProcessor类中,通过别人的文章浅学了BeanProcessor类:DBUtils学习----BeanProcessor类,最终将问题定位在了BeanProcessor类的callSetter方法上,回过头检查了Book.java的代码发现原来漏写了setId()方法,补充此方法后前后端传递Book.id便得以实现。

总结:Bean中要有无参构造器,且Bean中每个属性都要有规范命名的set方法,因为BeanProcessor类的方法会通过反射调用Bean的无参构造器,以及根据query方法得到的resultset对象中的column找到Bean中对应的属性,通过反射调用属性的set方法从而将resultset的每一行数据封装为实例。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值