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

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值