在mybatis中实现oracle分页和模糊查询

本文介绍了一种在Oracle数据库中实现模糊查询并结合分页功能的方法,通过使用ROWNUM来限定查询结果的数量,并展示了如何在MyBatis中正确书写对应的SQL映射文件。

        今天在工作中,遇到一个业务需求,就是需要在oracle里进行模糊查询并分页,SQL语句如下:

        select m.label,m.building_loc_id,m.shape.minx x,m.shape.miny y from 
             (select rownum rnm ,t.* from table_test  t  where rownum <=10 and t.label like '%茂名%') m

         where rnm>5

        可以用rownum实现分页,但是由于rownum是建立在查询结果上的,所以必须有了查询结果,才能使用“>”号

所以需要用嵌套语句,而在mybatis中,则需要注意,不能直接用“<”“>”,要用转义符,也不能直接在引号中使用“#”

<select id="queryNameByKey" resultType="java.util.HashMap" parameterType="java.util.HashMap">
   select m.label name,m.building_loc_id,m.shape.minx x,m.shape.miny y from 
(select ROWNUM rum,t.* from table_test t where  ROWNUM &lt;= #{endIndex} and t.label like                     '%${queryKey}%' )m
    where rum  &gt;   #{beginIndex}
</select>

<select id="queryRecordsCount" resultType="Integer" parameterType="java.util.HashMap">
   select count(*) from table_test t where t.label like '%${queryKey}%'

</select> 

        在引号中除了使用“$”,还可以使用concat,但是效率可能会降低,“$”效率较高,但是不安全,可以SQL注入

        例如:t.lable like concat('%',  concat(#{queryKey},  '%'))


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值