public static void main(String[] args) {
Connection db = null;
DbUtils.loadDriver("com.mysql.jdbc.Driver");
String sql3 = "select * from province";
try{
db = DriverManager.getConnection("jdbc:mysql://localhost:3306/software","root","root");
QueryRunner qr = new QueryRunner();
ResultSetHandler blh = new BeanHandler(province.class);
province p = (province)qr.query(db,sql3,blh);
System.out.println(p.getName());
}
catch(Exception e){
e.printStackTrace();
}
DbUtils.closeQuietly(db);
}package user;public class province {
private String name; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}
}刚开始学习DBUtils,按着例子来测试下BeanHandler,结果返回出来的Bean里的值全为NULL,看了源码也没发觉有什么问题,数据据和代码的字符格式也都是UTF-8,Integer倒是能正常返回,其它ArrayHandler或者MapHandler返回值也都正常,就是封装到Bean中就变成了NULL,请问下是为什么??

解决方案 »

  1.   

    你就没往set方法里面存数据,怎么能不为空呢?
      

  2.   

    看楼主的代码, 下面这个叫封装?
    province p = (province)qr.query(db,sql3,blh); query这个方法返回来的是结果集吧,你应该在结果集里把数据取出来,再set到你的bean里,然后用get方法才能取。 
    结果集不能强转成你的Province
      

  3.   

    QueryRunner qr = new QueryRunner();这是封装好的类,并不是JDBC里面的rs = stmt.query();
      

  4.   

    我一般用ResultSet 然后rs.getString(arg)什么问题都没有。
    QueryRunner这个类没用过
      

  5.   

    你的bean里属性和数据库字段对的上不?ResultSetHandler用得是反射。
      

  6.   

    补充,你明显select *返回的是结果集,还用beanhandler能正常才怪了。BeanListHandler