mybatis-plus3.x中的getOne方法条件有多条时,是随机取一条还是默认第一条?

在Wrappr中EQ的条件设置的多条倒序排序。然后使用的getOne方法 但是他每次都能取到第一条。现在有点慌,怕出问题。因为我想根据时间拿到最新的一条。

Iservice中的getOne会调用本身的重载方法,重载方法的第二个参数throwEx(默认为false)
也就是说如果此参数为false时会改为selectList方法查询,查询出的结果会固定取list.get(0)。
请注意只有Iservice中的getOne方法是这样的,baseMapper中的selectOne没有此逻辑
下面是mp的源码截图

img

img

要怕出事,那就自己写查询,如果查询出是个list,压根就不要用selectOne

selectOne 如果结果多条会报错,如果坚持需要使用selectOne最好后面加上一个last("limit 1")

在程序中见其名知其义,getOne就是获取一条的 ,并且要肯定你的条件只能查询出一条,在自定义构造器上.orderBy 时间desc排序 然后limit 1 如果不能使用limit 那就使用list取第一个接收或者写xml