mybatis动态条件组合分页查询
2024-10-19 18:39:09
一、动态条件处理
需要使用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 }
最新文章
- Linux内存管理之bootmem分配器
- UIkit框架之uiUIapplication
- AX 2012 在Grid 中添加image标识状态
- 删除div
- IT男常用软件网站整理
- Mobile first! Wijmo 5 + Ionic Framework之:Hello World!
- JS中的集中页面跳转的方法
- SharePoint 2010 ";客户端不支持使用windows资源管理器打开此列表"; 解决方法
- 11.编写一个Java程序,计算半径为3.0的圆周长和面积并输出结果。把圆周率π定义为常量,半径定义为变量,然后进行计算并输出结果。
- the c programming language 2-3
- [转] 关于UIView
- 在mac os 中安装 autoconf and automake
- 51 Nod 1029 大数除法【Java大数乱搞】
- Easyui 修改jquery validatebox为英文校验提示为中文提示
- (并发编程)进程池线程池--提交任务2种方式+(异步回调)、协程--yield关键字 greenlet ,gevent模块
- Android 使用ColorMatrix改变图片颜色
- .net Core2建立MVC网站,部署
- MATLAB System Generator初识
- CSS3实现的苹果网站搜索框效果
- JavaScript:Object属性方法
热门文章
- Qt 怎样生成带图标的exe
- js动画和css3动画的区别
- Zigzags CodeForces - 1400D
- Android开发之http网络请求返回码问题集合。
- 写shader小细节——这个会不断更新
- indexOf原理,Java,javascript,python实现
- JVM学习第三天(JVM的执行子系统)之字节码指令
- input.nextLine()和input.next()的区别
- 让mvn打包时跳过Junit测试
- The relationship between Sonarcube coverage and code branch