mybatis动态条件组合分页查询
Posted cat_fish
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis动态条件组合分页查询相关的知识,希望对你有一定的参考价值。
一、动态条件处理
需要使用mybatis的动态sql
1 <select id="selectItemByCondition" parameterType="com.rl.ecps.model.QueryCondition" resultMap="BaseResultMap"> 2 select * 3 from (select rownum rw, a.* 4 from (select * from eb_item t 5 <where> 6 <if test="brandId != null">t.brand_id = #{brandId}</if> 7 <if test="auditStatus != null"> and t.audit_status = #{auditStatus}</if> 8 <if test="showStatus != null"> and t.show_status = #{showStatus}</if> 9 <if test="itemName != null and itemName != ‘‘"> and t.item_name like ‘%${itemName}%‘</if> 10 </where> 11 <![CDATA[ 12 ) a 13 where rownum < #{endNum}) b 14 where b.rw > #{startNum} 15 ]]> 16 </select>
二、分页
Oracle的分页sql:
oracle的分页必须要使用rownum(只支持小于号)
select *
from (select rownum rw, a.*
from (select * from eb_item) a
where rownum < 21) b
where b.rw > 10
1、查询全量结果集
2、以全量结果集作为一张表,以rownum作为查询条件小于开始行号,以全量结果集和rownum作为结果集,并给rownum起个别名
3、以第二部为结果,查询rownum 大于其实行号
分页思想:
从查询角度,计算startNum和endNum (需要pageNo 和 pageSize计算)
startNum = (pageNo - 1 ) * pageSize ;
endNum = pageNo * pageSize + 1;
从展示角度,需要指导pageNo, totalCount, totalPage
totalPage三种情况:
totalCount pageSize totalPage
0 10 1
100 10 10
92 10 10
1 public int getTotalPage() { 2 totalPage = totalCount/pageSize; 3 if(totalCount == 0 || totalCount % pageSize != 0){ 4 totalPage++; 5 } 6 return totalPage; 7 }
以上是关于mybatis动态条件组合分页查询的主要内容,如果未能解决你的问题,请参考以下文章
Mybatis -- 动态Sql概述动态Sql之<if>(包含<where>)动态Sql之<foreach>sql片段抽取
springboot2.x+MyBatis-Plus+mysql5.7 动态拼接sql语句 分页查询 自定义sql 查询条件 分组 排序
springboot2.x+MyBatis-Plus+mysql5.7 动态拼接sql语句 分页查询 自定义sql 查询条件 分组 排序
基于Spring+SpringMVC+MyBatis开发书评网图书分页查询模块采用Ajax动态加载图书信息和实现图书多条件动态查询