com.yang.entity.SUser Query: select * from s_user XXXX Parameters: XXXX

java.sql.SQLException: Cannot create com.yang.entity.SUser: com.yang.entity.SUser Query: select * from s_user where username=? and password=? Parameters: [yang, 123456]


报错内容:

java.sql.SQLException: Cannot create com.yang.entity.SUser: com.yang.entity.SUser Query: select * from s_user where username=? and password=? Parameters: [yang, 123456]
	at org.apache.commons.dbutils.AbstractQueryRunner.rethrow(AbstractQueryRunner.java:392)
	at org.apache.commons.dbutils.QueryRunner.query(QueryRunner.java:351)
	at org.apache.commons.dbutils.QueryRunner.query(QueryRunner.java:289)
	at com.yang.util.JdbcUtil.queryOne(JdbcUtil.java:48)
	at com.yang.dao.impl.UserDaoImpl.checkAdmin(UserDaoImpl.java:17)
	at com.yang.service.impl.UserServiceImpl.checkAdmin(UserServiceImpl.java:19)
	at com.yang.controller.UserServlet.adminLogin(UserServlet.java:99)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at com.yang.controller.BaseServlet.service(BaseServlet.java:19)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.yang.filter.UserFilter.doFilter(UserFilter.java:28)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:544)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:616)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:831)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1634)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Thread.java:748)

今天利用commons-dbUtils工具包连接数据库,在访问数据库获得数据的时候出现了报错。

解决:实体类中创建无参构造


思考和解决的过程:

我自己通过common-dbutil工具包再次封装的方法:

/*查询多条数据*/
public static <T> List<T> queryList(Class clazz, String sql, Object... args){
    try {
        BasicRowProcessor brp = new BasicRowProcessor(new GenerousBeanProcessor());
        return runner.query(sql,new BeanListHandler<T>(clazz,brp),args);
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return null;
}

实体类

public class SUser implements Serializable {

  private String id;
  private String username;
  private String password;
  private Integer type;

  public SUser(String id, String username, String password, Integer type) {
    this.id = id;
    this.username = username;
    this.password = password;
    this.type = type;
  }

  @Override
  public String toString() {
    return "SUser{" +
            "id='" + id + '\'' +
            ", username='" + username + '\'' +
            ", password='" + password + '\'' +
            ", type=" + type +
            '}';
  }

  public String getId() {
    return id;
  }

  public void setId(String id) {
    this.id = id;
  }

  public String getUsername() {
    return username;
  }

  public void setUsername(String username) {
    this.username = username;
  }


  public String getPassword() {
    return password;
  }

  public void setPassword(String password) {
    this.password = password;
  }


  public Integer getType() {
    return type;
  }

  public void setType(Integer type) {
    this.type = type;
  }
}

dao层的方法:

@Override
public SUser checkAdmin(String username, String password) {
   return JdbcUtil.queryOne(SUser.class, "select * from s_user where username=? and password=?", username, password);
}

思考:报错信息是没有不能创建SUser这个类。但是我又SUser实体类呀,而且dao层方法的参数也没有问题。那为什么不能创建SUser类呢?

后来突然想到封装jdbc工具类的时候方法里面用到的反射Class,如果是反射的那问题应该是出现在反射的时候没有成功创建SUser对象。后来想利用反射创建来的时候会用到无参构造终于找到原因了

在这里插入图片描述
总结:所以在创建实体类的时候,防止后面出现错误。我们在创建的时候就将无参,全参构造器都创建好。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

记或往

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值