1.如果使用的是selectOne()方法:
报错为:
org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 3 at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:70)
以上是说,你使用了selectOne但是结果集有3条。无法正常接收结果集。
解决:
解决的办法是。接收的参数可以换成对应的集合类型,selectOne换成selectList.
selectOne、selectList是在JAVA与数据库进行交互的时候,使用MyBaits框架,用来接收结果集的参数,
selectOne:是用来接收一条结果集
selectList:是用来接收多条结果集,一般是用结果来接收。
如果返回的数据不只一条,但是使用了selectOne来接收结果集,那么就会抛出异常。
2.如果使用的是getOne()方法:
解决方法一:
在条件外增加限定条数:.last(" limit 1 ")
UserMain userMain = userService.getOne
(Wrappers.<UserMain>lambdaQuery().eq(UserMain::getUserId, id)
.last(" limit 1 "));
getOne是返回一个对象,用来接收一条结果集。list是返回的一个集合,用来接收多条结果集。
解决方法二:
或者直接换方法为.list(),用List来接收对象
List<UserMain> userMainList = userService.list
(Wrappers.<UserMain>lambdaQuery().eq(UserMain::getUserPhone, phone));