记录一下:
Sql语句没问题, 业务代码也没问题,排查到Mybatis-Plus源码里才发现问题- -
PageMapperMethod这个类里面执行sql语句之前会有如下判断
原因就处在if判断条件里的第三个条件了-- IPage.class.isAssignableFrom(args[0].getClass())
!!!
也就是说Page参数必须是第一个参数,
否则会执行else里的selectOne,
于是就有了TooManyResultsException。
总结:
Mybatis-Plus 自定义分页时,必须将Page参数放在第一个,这是源代码里写死的, 传说中的约定?希望官方文档能把这个加上吧。
官方文档:
@ https://mp.baomidou.com/guide/