java查询mysql时报“java.sql.SQLException:Cannot create ..(类名)”原因

关键在于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)
`

猜你喜欢

转载自blog.csdn.net/weixin_42422429/article/details/81671648
今日推荐