mybatis oracle 分页+模糊查询

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis oracle 分页+模糊查询相关的知识,希望对你有一定的参考价值。

实现分页的方式有很多,但常用的是通过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 分页+模糊查询的主要内容,如果未能解决你的问题,请参考以下文章

java mybatis 分页模糊查询页面怎么写

mybatis-plus模糊查询

mybatis组合模糊+分页查询

mybatis 全查 分页 模糊查询一体

MyBatis在Oracle数据库下模糊查询之参数个数无效错误

mybatis-plus两表联查带分页带模糊查询所有订单信息