码迷,mamicode.com
首页 > 数据库 > 详细

mybatis oracle 分页+模糊查询

时间:2016-09-09 14:58:09      阅读:1316      评论:0      收藏:0      [点我收藏+]

标签:

实现分页的方式有很多,但常用的是通过SQL来显示分页。

下面就来介绍mybatis 来实现Oracle分页的写法:(ps:不同数据库的写法有区别)

  一、分页数据

 1 <select id="findPageByCode" parameterType="java.util.Map" resultMap="pageVO">
 2         select * from
 3         (
 4             select A.* ,ROWNUM rn
 5             from (select co_code,co_name
 6             from IP_COMPANY
 7             <where>
 8                 <if  test=co_code != null and co_code!="" >
 9                     co_code like ‘‘||#{co_code}||%
10                 </if>
11             </where> ORDER BY co_code )A
12             
13              <if test=pageNumStop != null and pageNumStop!="" >
14                  <![CDATA[where ROWNUM <=#{pageNumStop}]]>
15              </if>
16         )
17         <if test=pageNumBegin != null and pageNumBegin!="" >
18             Where rn >=#{pageNumBegin}
19         </if>
20     </select>

解释:

      1、由于传递多个参数,所以使用Map集合,也可以使用pojo对象,但是变量名要保持一致。

      2、由于我的需求是向右模糊查询所以写成 co_code like ‘‘||#{co_code}||% 的形式,可以根据自己的需求修改%。

      3、使用<![CDATA [ ]]>是为了过滤掉文本字段。这里我还有点不是很明白,因为传过来的pageNumStop是int型的吗?

那么下面的Where rn >=#{pageNumBegin} ,不加<![CDATA[]]>也可以通过。

      4、rn是ROWNUM的别名。

      5、第三个select开始是你要查询的数据。

 

  二、记录总数

 

 1 <select id="selectCount" parameterType="java.util.Map" resultType="int">
 2         select * from
 3         (
 4             select A.* ,ROWNUM rn
 5             from (select count(*)
 6             from IP_COMPANY
 7             <where>
 8                 <if  test=co_code != null and co_code!="" >
 9                     co_code like ‘‘||#{co_code}||%
10                 </if>
11             </where>)A
12             
13              <if test=pageNumStop != null and pageNumStop!="" >
14                  <![CDATA[where ROWNUM <=#{pageNumStop}]]>
15              </if>
16         )
17         <if test=pageNumBegin != null and pageNumBegin!="" >
18             Where rn >=#{pageNumBegin}
19         </if>
20     </select>

 

 

解释:

      1、和上面没什么太大区别,只是通过count()函数来查询记录的总数。

      2、返回值也要做相应的修改。

 

mybatis oracle 分页+模糊查询

标签:

原文地址:http://www.cnblogs.com/yaket/p/5856305.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!