mybatis分页查询的万能模板
分页查询项目里太多了,而这种分页查询,在mybatis里面的配置几乎一模一样,今天就整理一个比较好和实用的模板,供以后直接Ctrl+C
<select id="queryMember" resultMap="MemberInfoMap">
select *
from (
select ROW_NUMBER() over(order by m.create_time) page,
m.*,
T.TEAM_NAME
from MC_MEMBER m
left join MC_TEAM T on T.ID = M.TEAM_ID
<include refid="member_where" />
) r
where R.PAGE > (#{query.pageNo} - 1) * #{query.pageSize}
and R.PAGE <= #{query.pageNo} * #{query.pageSize}
</select> <sql id="member_where" >
<where>
<if test="query.id != null and query.id != '-999'">
m.ID = #{query.id}
</if>
<if test="query.name != null and query.name != '-999'">
AND m.NAME = #{query.name}
</if>
<if test="query.mobile != null and query.mobile != '-999'">
AND m.MOBILE = #{query.mobile}
</if>
<if test="query.teamId != null and query.teamId != '-999'">
AND m.TEAM_ID = #{query.teamId}
</if>
<if test="query.beginTime != null and query.beginTime != 0" >
and s.begin_date >= (#{query.beginTime} / (1000 * 60 * 60 * 24) + TO_DATE('1970-01-01', 'YYYY-MM-DD'))
</if>
<if test="query.endTime != null and query.endTime != 0">
and s.end_date <= (#{query.endTime} / (1000 * 60 * 60 * 24) + TO_DATE('1970-01-01', 'YYYY-MM-DD'))
</if>
<if test="query.keyWord != null and query.keyWord != ''">
and (s.NAME like '%${query.keyWord}%'
or s.EMPLOYEE_NO like '%${query.keyWord}%')
</if>
</where>
</sql>
有几个需要注意的点提一下:
1、子查询里面的 ROW_NUMBER() over(order by m.create_time) page,可以进一步利用强大的over()函数,进行排序,甚至分组
2、query.pageNo的最小值(即首页),应该从 1 开始
3、<include refid="member_where" /> where的整个条件都放在里面,可以看到原sql里没有where关键字了,而在<sql> 里面用到了<where>标签,具体可参阅mybatis官网的相关文档,这样方便,看起来也舒服
4、if 里面的判断条件,应根据 参数类型 和 实际默认值 选择是"-999"、0、""(即空字符串)还是别的,另外,有些情况需要将if 里面的 != 改成 == 才执行里面的条件,看自己实际需求
5、这里过滤时间的if,传入的是 时间戳 形式的(即整数形式),这种处理是比较简洁的一种
6、最后一个if 是模糊查询,也是可以的,关于模糊查询可以度娘(总是记不住)
7、最后最后提一下,sql格式,即sql关键字对齐,和非sql关键字大写,,,程序员基本素养、、、以上格式是有问题的==、
mybatis分页查询的万能模板的更多相关文章
- springmvc+spring+mybatis分页查询实例版本1,ver1.0
无聊做做看看,几乎没有怎么仔细做过这方面的,总是以为很简单,想想就会,实际做起来结合工作经验感觉还是挺有收获的,可以用在自己的项目上 第一版本思路:框架使用ssm,这个无所谓,采用分页语句查询指定页面 ...
- JAVA入门[10]-mybatis分页查询
1.添加分页插件 在mybatis-generator-config.xml添加plugin节点: <plugin type="org.mybatis.generator.plugin ...
- mybatis分页查询,SqlServer 2008 查询速度很慢
一个业务场景,需要进行union查询: 查询速度非常慢,大概要37秒: 直接复制sql在数据库客户端执行,速度很快,由此可知是mybatis的原因,在网上搜索,可以配置fetchSize=" ...
- Mybatis分页查询与动态SQL
一.Mybatis的分页查询 由于第一二节较为详细讲述了Mybatis的环境搭建,文件配置,SQL编写和Java代码实现,所以接下来的讲述都将只抽取关键代码和mapper文件中的关键sql,详细的流程 ...
- mybatis分页查询需要注意的问题
一般对mybatis的分页查询的关键代码就两行: #currentPage代表当前页,pageSize代表每页的行数 PageHelper.startPage(currentPage, pageSiz ...
- spring boot +mybatis分页查询
这是spring boot集合mybatis的分页查询. pom依赖: <!-- 分页插件 --> <dependency> <groupId>com.github ...
- 使用Oracle实现的MyBatis分页查询效果
1.mybatis.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configur ...
- Mybatis 分页查询
该篇博客记录采用pagehelper分页插件实现Mybatis分页功能 一.依赖 pom.xml <!-- pagehelper --> <dependency> <gr ...
- Mybatis分页查询total中的坑
写在前面 今天用mybatis进行分页查询,大家应该都用过pageHelper这个插件,但是在计算总的数据数的时候,page.getTotal()总是返回0,要么就是返回pageSize(),今天给大 ...
随机推荐
- ModelBiner不验证某个属性
问题 使用MVC的同学十有八九都会遇到这个错误:从客户端(Content="<script>...")中检测到有潜在危险的Request.Form 值. 这个错误是在请 ...
- robot framework---校验新增条数功能
check总条数验证 [Arguments] ${beforevalue} ${endvalue} ${value} ${a} Evaluate '${beforevalue}'.replace('共 ...
- 调节kafka消费信息的大小
Kafka设计的初衷是迅速处理短小的消息,一般10K大小的消息吞吐性能最好(可参见LinkedIn的kafka性能测试).但有时候,我们需要处理更大的消息,比如XML文档或JSON内容,一个消息差不多 ...
- 雷林鹏分享:jQuery EasyUI 数据网格 - 添加复选框
jQuery EasyUI 数据网格 - 添加复选框 本实例演示如何放置一个复选框列到数据网格(DataGrid).通过复选框,用户将可以选择 选中/取消选中 网格行数据. 为了添加一个复选框列,我们 ...
- Oracle中用户的创建和权限设置
权限: CREATE SESSION --允许用户登录数据库权限 CREATE TABLE --允许用户创建表权限 UNLIMITED TABLESPACE --允许用户在其他表空间随意建表 角色: ...
- 在docker中运行mariadb程序
安装docker 获取mariadb镜像 docker pull mariadb 首先在https://hub.docker.com查找mariadb官方镜像,相关参数设置https://hub.do ...
- 移动端跨平台方案对比:React Native、weex、Flutter
跨平台一直是老生常谈的话题,cordova.ionic.react-native.weex.kotlin-native.flutter等跨平台框架百花齐放,颇有一股推倒原生开发者的势头. 为什么我们需 ...
- Spark读写HBase
Spark读写HBase示例 1.HBase shell查看表结构 hbase(main)::> desc 'SDAS_Person' Table SDAS_Person is ENABLED ...
- VueJs 自定义过滤器使用总结
过滤器是一个通过输入数据,能够及时对数据进行处理并返回一个数据结果的简单函数.Vue有很多很便利的过滤器,可以参考官方文档, http://cn.vuejs.org/api/#过滤器 ,过滤器通常会使 ...
- MySQL查询性能优化(精)
MySQL查询性能优化 MySQL查询性能的优化涉及多个方面,其中包括库表结构.建立合理的索引.设计合理的查询.库表结构包括如何设计表之间的关联.表字段的数据类型等.这需要依据具体的场景进行设计.如下 ...