Mybatis 查询结果和sql执行结果不符
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 问题 使用mybatis查询数据,看到执行sql的日志,同时也打印了查询的结果个数为3,可是通过 selectList 得到的 List list 却只有1条数据; 分析 一开始以为是缓存导致,因为mybatis有缓存,而且缓存的结果是可以改变的,可是二级缓存默认关闭,一级缓存必须在同一个 sqlsession对象的生命周期内, 这两个条件都排查了,没问题。 解决 然后,看到了select 的返回值是 resultMap , 沿着 resultMap 去看数据结构发现里面指定了一个字段为ID,问题就在这里,该表的主键是联合主键,有多个字段一起作为key, 所以查询的结果可不一定就是以这个ID作为识别记录的key,因为查询的结果ID都是一样的,所以Mybatis在封装ResultRow的时候只会有一条。 问题前(联合主键只指定了一个字段作为ID): <resultMap id ="TodoTask" type ="map" > <id column ="businessId" property ="businessId" ></id> <result column ="businessName" property ="businessName" ></result> <result column =