项目场景:
分页展示项目数据
问题描述:
Mybatis 分页查询信息总数与分页不数据不对等,大概率遇到了Mybatis Collection一对多查询 与 pageHelper 插件冲突的情况,,在此记录一下
原因分析:
totoal统计的时候展示的是 Collections数据 的数量,而页面上展示的则是 resultMap 中 Collection 的数量,
例如 :resultMap 中有 1条数据,每条数据中的 Collection 中有 10条数据,那么 返回的total总数量为 1, 但是分页查询是展示的会是 10条数据
解决方案:
停止采用 直接在resultMap中返回查询结果的方法,而是采用 在resultMap 的 collection中进行子查询的方法获取数据, 子查询的查询结果会以单一List的方式返回,这样就跟查询的total总数相等了。
<resultMap id="ResultMapDesignDTO1" type="test">
<id column="id" jdbcType="INTEGER" property="id"/>
<result column="works_id" property="worksId" jdbcType="VARCHAR"/>
<collection property="worksLog" ofType="WorksLog" column="works_id" select="getWorksLogs"/>
</resultMap>
<select id="getWorksLogs" resultMap="WorksLogs" parameterType="java.lang.String">
SELECT oper_time,memo
FROM works_log where works_id =#{worksId}
</select>