之前遇到一个问题,用JDBCTemplate写的东西总会提示Incorrect result size: expected 1, actual 0这个错误。
怎么说呢,template.queryForObject()这个方法是返回的必须是一个仅限一个结果!
但是你用实体类去接收的时候,对于刚注册的用户用户名肯定是不重复的,希望返回一个null,再继续进行下面的操作,但是这个东西不会给你返回一个空值,而是直接给你一个如标题所示的错误。
String sql="select * from tab_user where username = ?";
user=template.queryForObject(sql,new BeanPropertyRowMapper<User>(User.class),username);
想了个办法说用queryFoeList去接收,
template.queryForList(sql,new BeanPropertyRowMapper<User>(User.class),username);
但是获取元素的时候又报错,index 0,get 0,真是难搞。
这时候我们应该用try-catch语句将其捕捉起来,这样就不会出现问题了。
public User findByUsername(String username) {
User user=null;
//创建sql
try{
String sql="select * from tab_user where username = ?";
user=template.queryForObject(sql,new BeanPropertyRowMapper<User>(User.class),username);
}catch (Exception e){
}
return user;
本文探讨使用JDBCTemplate时遇到的IncorrectResultSize:expected1,actual0错误,并提供了一种通过try-catch块来处理该问题的方法。
8668

被折叠的 条评论
为什么被折叠?



