1 问题描述
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 2
2 问题分析
2.1 MyBatis
1、当前查询方法定义了只能返回一条数据,但是查询结果却返回了多条数据,导致报错。
/**
* 根据用户名获取用户
*
* @param username 用户名
* @return
*/
UserEntity getUserByName(String username);
解决办法:
将查询方法定义的返回数量改为可以返回多条。
/**
* 根据用户名获取用户
*
* @param username 用户名
* @return
*/
List<UserEntity> getUserByName(String username);
2.2 MyBatis-Plus
1、当前查询方法定义了只能返回一条数据,但是查询结果却返回了多条数据,导致报错。
/**
* 根据用户名获取用户
*
* @param username 用户名
* @return
*/
public UserEntity getUserByName(String username) {
QueryWrapper<UserEntity> queryWrapper = new QueryWrapper<UserEntity>();
queryWrapper.lambda().eq(UserEntity::getUsername, username);
return this.getOne(queryWrapper);
}
解决办法:
将查询方法定义的返回数量改为可以返回多条。
/**
* 根据用户名获取用户
*
* @param username 用户名
* @return
*/
public List<UserEntity> getUserByName(String username) {
QueryWrapper<UserEntity> queryWrapper = new QueryWrapper<UserEntity>();
queryWrapper.lambda().eq(UserEntity::getUsername, username);
return this.list(queryWrapper);
}