首页 > 代码库 > mybatis oracle 分页+模糊查询
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 )A12 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>)A12 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 分页+模糊查询
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。