欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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)
`