java查询mysql时报“java.sql.SQLException:Cannot create ..(类名)”原因
程序员文章站
2022-06-15 09:17:57
...
关键在于BeanListHandler处理的类一定要有无参构造方法
我之前使用的mysql查询,BeanListHandler处理的类(设为A类)都是没有设置带参构造方法,那么A类就会有一个默认的无参构造方法(虽然没有显示)。但是刚才我对A类设置了一个带参构造,无形中就把那个隐形的无参构造删了,处理方法是要对A类新加一个无参构造方法,里面不用写东西。
原因的话应该是:BeanHanlder通过反射创建A的实例时,寻找并调用的是A的无参构造方法,如果A没有无参构造,也就不能创建实例对象。(初学,说法不一定准确)
查询代码如下:
代码中,OrderItem类没有无参构造方法,结果报错。
String sql= "select * from orderItem where oid=?";
List<OrderItem> list =new ArrayList<OrderItem>();
try {
list= txQueryRunner.query(sql,new BeanListHandler<OrderItem>(OrderItem.class),oid);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
错误信息:
java.sql.SQLException: Cannot create com.XXXX.domain.OrderItem: com.XXXX.domain.OrderItem Query: select * from orderItem where oid=? Parameters: [5EC3F3ABB3404C5D9DBF2SSSS5D8EBBA]
at org.apache.commons.dbutils.AbstractQueryRunner.rethrow(AbstractQueryRunner.java:320)
at org.apache.commons.dbutils.QueryRunner.query(QueryRunner.java:349)
at org.apache.commons.dbutils.QueryRunner.query(QueryRunner.java:210)
`