使用queryForObject方法查询数据库时,结果集为空,则会抛出"EmptyResultDataAccessException"异常。
public static <T> T requiredSingleResult(@Nullable Collection<T> results) throws IncorrectResultSizeDataAccessException {
if (CollectionUtils.isEmpty(results)) {
throw new EmptyResultDataAccessException(1);
} else if (results.size() > 1) {
throw new IncorrectResultSizeDataAccessException(1, results.size());
} else {
return results.iterator().next();
}
}
由于异常 user为null时 不能进行转发至"/failServlet" 页面500
if (user == null){
request.getRequestDispatcher("/failServlet").forward(request,response);
}else {
//存储数据
request.setAttribute("user",user);
//转发
request.getRequestDispatcher("/successServlet").forward(request,response);
}
解决:try catch处理一下 异常时 返回null
try {
String sql = "select * from users where username = ? and password = ?";
User user = template.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class), loginUser.getUsername(), loginUser.getPassword());
return user;
} catch (DataAccessException e) {
return null;
}
``