平时我们使用mybatis查询一条数据时,有时会使用selectOne,但是selectOne有个小问题是可能会导致报错。经测试如下:
测试版本:mybatis-spring:2.0.0。mapper的selectOne不会帮我们limit 1,如果记录不止1条就会报错。service的getOne调的也是mapper的selectOne,也是一样。如果我们不是用id查询,又不能确保查询用的条件上,数据一定唯一,除非条件上有唯一索引,建议不要selectOne,用list接口,或者自己写sql limit 1。
或者在selectOne后.last("limit 1")也可以:this.baseMapper.selectOne(new QueryWrapper<UcAssessScoreStat>().eq("id", id).eq("is_deleted", 0).orderByDesc("create_at").last("limit 1"));
service的getOne,默认调的mapper的selectOne:
但如果加了个参数,就不是调mappper的selectOne了: