分页查询时,需要取出当前页面的数据,以及总数。
以前使用工具类的时候,可以取出上述两个数据,觉得是一次查询就够了,没有去了解具体的查询流程。后来在实际开发中,遇到了分页,总觉得查询两次是不是多查了一次,影响效率。后来经过查询得知,确实需要查询两次。
网上拿的,请原谅。
<!-- 用来记录分页查询时的所有数据量,避免出现分页查询时需要查询两次 -->
<resultMap type="java.lang.Integer" id="count">
<result column="total"/>
</resultMap>
<!-- 多条件查询 /分页查询-->
<select id="selectPage" resultMap="自定义的resultMap,count">
SELECT SQL_CALC_FOUND_ROWS * FROM 表名及条件
WHERE ID in (SELECT ID from (SELECT ID FROM A LIMIT ${(pageNo-1)*pageSize},#{pageSize}) AS t)
order by ID;
<!-- 查询数据量 -->
SELECT FOUND_ROWS(*) AS total;
</select>