Mybatis 的分页条件查询语句编写
刚来到一家新公司, 翻看项目代码, 发现一位同事写的查询逻辑很好, 不用插件, 一个语句完成了分页条件查询.
而我之前一般都是在业务层对参数进行判断, 如果有条件,就调用条件查询的方法, 如果没有条件, 就调用查询所有的方法, 代码冗余较多
贴下代码:
1, 首先定义resultMap:
<resultMap id="xxxModel" type="com.aaa.XxxModel">
<id column="id" javaType="java.lang.Long" jdbcType="BIGINT" property="id" />
<result column="ip" javaType="java.lang.String" jdbcType="VARCHAR" property="ip" />
<result column="port" javaType="java.lang.Integer" jdbcType="INTEGER" property="port" />
<result column="userName" javaType="java.lang.String" jdbcType="VARCHAR" property="userName" />
<result column="password" javaType="java.lang.String" jdbcType="VARCHAR" property="password" />
<result column="lineNum" javaType="java.lang.Integer" jdbcType="INTEGER" property="lineNum" />
<result column="isInternation" javaType="java.lang.Integer" jdbcType="INTEGER" property="isInternation" />
<result column="createDate" javaType="java.lang.String" jdbcType="VARCHAR" property="createDate" />
<result column="updateDate" javaType="java.lang.String" jdbcType="VARCHAR" property="updateDate" />
</resultMap> 2, 定义sql片段, 方便阅读:
//条件和分页参数的封装, 利用动态sql, 特别是模糊查询的%拼接, 很赞:
<sql id="pageListCount">
from anti_http_proxy a
<if test="groupId != null and groupId !=''">
LEFT JOIN anti_proxy_group b on a.`host` = b.`host`
LEFT JOIN anti_group_server c on b.group_id = c.group_id
</if>
where 1=1
<if test="ip != null and ip !=''">
and a.`host` like CONCAT('%','${ip}','%')
</if>
<if test="groupId != null and groupId !=''">
and c.id = #{groupId}
</if>
ORDER BY a.gmt_modified desc
<if test="(pageNumber != null and pageNumber != '' or pageNumber == 0) and pageSize != null and pageSize != ''">
limit #{pageNumber}, #{pageSize}
</if>
</sql> <sql id="resultCol">
a.id
,a.`host` as ip
,a.`port`
,a.username as userName
,a.`password`
,a.band as lineNum
,a.international as isInternation
,DATE_FORMAT(a.gmt_create,'%Y-%m-%d %H:%i:%s') as createDate
,DATE_FORMAT(a.gmt_modified,'%Y-%m-%d %H:%i:%s') as updateDate
</sql>
3, 完成查询方法
<select id="selectAllByPage" resultMap="xxxModel">
select
<include refid="resultCol" />
<include refid="pageListCount" />
</select>
Mybatis 的分页条件查询语句编写的更多相关文章
- 对于Oracle中分页排序查询语句执行效率的比较分析
转自:http://bbs.csdn.net/topics/370033478 对于Oracle中分页排序查询语句执行效率的比较分析 作者:lzgame 在工作中我们经常遇到需要在Oracle中进行分 ...
- 使用jdbc拼接条件查询语句时如何防止sql注入
本人微信公众号,欢迎扫码关注! 使用jdbc拼接条件查询语句时如何防止sql注入 最近公司的项目在上线时需要进行安全扫描,但是有几个项目中含有部分老代码,操作数据库时使用的是jdbc,并且竟然好多都是 ...
- mybatis按datetime条件查询,参数为时间戳时
mybatis按datetime条件查询,参数为时间戳时,如果数据库为2018-1-1 20:22:10, 你的时间戳也为2018-1-1 20:22:10,但却没找到数据.可能是时差导致的.百度修正 ...
- mybatis学习(五)(动态mybatis(多条件查询))
有时候要查询条件是多条件的,尤其是使用mybatis的时候如何创建sql语句呢? 这里mybatis有自己的办法,如下: 案例:通过传入map,根据map里面的数据来查询 mapper配置如下: &l ...
- SSM-MyBatis-13:Mybatis中多条件查询
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 实体类 public class Book { private Integer bookID; private ...
- thinkphp分页+条件查询
最近项目上面有一个带条件查询的分页列表,一开始form用的post,点击第二页就没有跳转成功,原因是分页是get请求,post数据链接到其他页面就会被清除. 解决办法: 1.form表单method= ...
- MyBatis中的条件查询(动态sql)
本文将介绍使用MyBatis框架,编写DAO层接口类和接口类对应的sql映射文件,使用动态sql查询满足条件的用户集合. 首先,需要创建一个实体类User,供封装数据使用: package com.x ...
- 黑马学习MyBatis 用MyBatis对表进行条件查询 模糊查询 动态sql
package cn.itcast.domain; /* CREATE TABLE `message` ( `id` int(11) NOT NULL, `command` varchar(16) D ...
- sql多条件查询语句
如上图:三个文本可选项,那sql语句怎么写呢? 1.首先获取三个文本的值分别为Name,Age,Sex. 2.string sql="select * from 表 where 1=1&qu ...
随机推荐
- [译]WPF MVVM 架构 Step By Step(5)(添加actions和INotifyPropertyChanged接口)
应用不只是包含textboxs和labels,还包含actions,如按钮和鼠标事件等.接下来我们加上一些像按钮这样的UI元素来看MVVM类怎么演变的.与之前的UI相比,这次我们加上一个"C ...
- ffmpeg参数说明
ffmpeg.exe -i F:\慶哥\慶哥之歌.mp3 -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 f:\11.flv ffmpeg -i F:\01.wmv ...
- 单例模式与静态变量在PHP中
在PHP中,没有普遍意义上的静态变量.与Java.C++不同,PHP中的静态变量的存活周期仅仅是每次PHP的会话周期,所以注定了不会有Java或者C++那种静态变量. 1. 静态变量在PHP中 在PH ...
- kaggle
注册kaggle可真所谓费劲心思,先是邮箱验证不来,换了两三个浏览器都不成功,非常恼火,没有验证码,最后还是FQ加谷歌浏览器,哎,注册之旅还是非常坎坷德,但是好消息是注册成功了.接下来是机器学习语言, ...
- maven 不同环境加载不同的properties 文件
http://haohaoxuexi.iteye.com/blog/1900568 //参考文章 实际项目中pom配置如下 <profiles> <profile> <i ...
- 验证表格多行某一input是否为空
function checkTableKeyWordVal(tableId){ var result = true; $("#"+tableId+" tbody tr&q ...
- php中的XML转数组
/** * 最简单的XML转数组 * @param string $xmlstring XML字符串 * @return array XML数组 */ function simplest_xml_to ...
- Kafka 源代码分析之LogSegment
这里分析kafka LogSegment源代码 通过一步步分析LogManager,Log源代码之后就会发现,最终的log操作都在LogSegment上实现.LogSegment负责分片的读写恢复刷新 ...
- .NET C#到Java没那么难,MVC篇
最典型的JAVA MVC就是JSP + servlet + javabean的模式.比较好的MVC,老牌的有Struts.Webwork.新兴的MVC 框架有Spring MVC.Tapestry.J ...
- Java基础语法<七> 对象与类
笔记整理 来源于<Java核心技术卷 I > <Java编程思想> 1. 类之间的关系 依赖 users– a 是一种最明显的.最常见的关系.如果一个类的方法操作另一个类的对象 ...