使用DBUtils查询数据,如果使用ArrayListHandler等都能够返回正确值,但使用BeanListHandler 和 BeanHandler则一直返回null

问题解决:
1、使用DBUtils查询数据,如果使用ArrayListHandler等都能够返回正确值,但使用BeanListHandler 和 BeanHandler则一直返回null;


解决方法1(使用DBUtils1.5版本):

使bean的字段与数据库字段名称一致即可,或者说,使该实体类各字段的setter和getter方法的名字要与结果集(也可以说是数据库表字段名称,但不要求该bean的私有成员与表结果集列名一致)一一对应,只有这样才能将结果集封装成JavaBean对象,对比可见Exceptionmodel和IP_LABEL_TYPE。但这一方法操作起来略麻烦,以下方法更好:


最终解决方法:使用DBUtils1.6版本提供的BeanProcessor类的子类GenerousBeanProcessor就可以解决。如下:


String sql = "select id,user_name,login_name,user_password,user_level,user_lock from users_t"; 
// 创建一个BeanProcessor对象
// GenerousBeanProcessor 仅仅重写了父类BeanProcessor的mapColumnsToProperties方法
BeanProcessor bean = new GenerousBeanProcessor ();
// 将GenerousBeanProcessor对象传递给BasicRowProcessor
RowProcessor processor = new BasicRowProcessor(bean);
// 最后使用GenerousBeanProcessor的mapColumnsToProperties处理表字段到javabean的属性映射
Users rs = runner.query(sql, new BeanHandler<Users>(Users.class, processor));
// Print: BeanHandler: Users{id=1, userName='测试用户1', loginName='test1', userPassword='jiseflwes', userLevel=10, userLock=true}
System.out.println("BeanHandler: " + rs);


2、DBUtils不要求实体类名称必须与数据库表名称一致,但写SQL语句时必须使用数据库表名
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值