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片段抽取

动态SQL查询,多条件,分页

springboot2.x+MyBatis-Plus+mysql5.7 动态拼接sql语句 分页查询 自定义sql 查询条件 分组 排序

springboot2.x+MyBatis-Plus+mysql5.7 动态拼接sql语句 分页查询 自定义sql 查询条件 分组 排序

基于Spring+SpringMVC+MyBatis开发书评网图书分页查询模块采用Ajax动态加载图书信息和实现图书多条件动态查询

6.mybatis里面的动态sql是怎么设定的,常用标签有那些以及其