java.sql.SQLException: Cannot create xxx 解决办法
程序员文章站
2022-06-15 09:10:59
...
java.sql.SQLException: Cannot create xxx 解决办法
前言:纪念第一篇博客:一直想试着写写博客,苦于不知道该写什么,最近在学Java框架,正好逮着一个机会,废话不多说,上代码
//使用DbUtils里的QueryRunner操作数据库
private QueryRunner queryRunner = new QueryRunner();
/**
* 查询返回一个javaBean的sql语句
*
* @param type 返回的对象类型
* @param sql 执行的sql语句
* @param args sql对应的参数值
* @param <T> 返回的类型的泛型
* @return
*/
public <T> T queryForOne(Class<T> type, String sql, Object... args) {
Connection con = JdbcUtils.getConnection();
try {
return queryRunner.query(con, sql, new BeanHandler<T>(type), args);
} catch (SQLException e) {
e.printStackTrace();
} finally {
JdbcUtils.close(con);
}
return null;
}
String sql = "select `id` , `name` , `author` , `price` , `sales` , `stock` , `img_path` from t_book where id = ?";
System.out.println(queryForOne(Book.class, sql, id));
对应的JavaBean类
public class Book {
private Integer id;
private String name;
private String author;
private BigDecimal price;
private Integer sales;
private Integer stock;
private String imgPath;
}
代码很简单,通过传入JavaBean类,sql语句和语句中的参数,将sql语句查询的结果封装成对应的JavaBean对象,return该对象。
遇到的问题如下,说是不能创建对应的对象
最初怀疑问题出在sql语句上,也就是数据库里的属性名和JavaBean里的私有变量名不一致,而我参考的代码,数据库的最后一个属性叫“img_path”,JavaBean类里的变量名是“imgPath”,还真就不一样,一个按照python命名规范命名,一个按照Java命名规范命名,于是修改sql语句如下
String sql = "select `id` , `name` , `author` , `price` , `sales` , `stock` , `img_path` imgPath from t_book where id = ?";
在查询时将最后一个属性改一个别名,改成对应JavaBean类里的变量名。结果还是一样报错。
最后终于找到答案,JavaBean类里没写无参构造,因为创建Bean对象的过程使用的是newInstance()方法,该方法只能调用无参构造,类中没写无参构造,当然也就不能创建对象。当初写JavaBean类的时候,写完变量,右键getter,setter,constructor,就完事了。现在知道问题所在了,加上无参构造之后,代码没bug,楼下大爷看了都说好,又可以愉快地学习了。
推荐阅读
-
MySQL创建用户时提示“Operation CREATE USER failed for XXX”的解决办法
-
Error in nextTick: "TypeError: Cannot set property 'xxx' of undefined"解决办法
-
java查询mysql时报“java.sql.SQLException:Cannot create ..(类名)”原因
-
使用QueryRuner出现java.sql.SQLException: Cannot create com.pojo.User:异常
-
java.lang.RuntimeException: Cannot create an instance of class com.xxx.xxxViewModel
-
java.sql.SQLException: Cannot create com.orzxlee.d_generic.Student 异常
-
使用QueryRunner报错:java.sql.SQLException: Cannot create
-
java.sql.SQLException: Cannot create xxx 解决办法
-
java.sql.SQLException: Cannot create错误
-
Error in nextTick: "TypeError: Cannot set property 'xxx' of undefined"解决办法