您的位置:首页 > 数据库 > Oracle

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

2018-04-02 20:13 696 查看
        今天在工作中,遇到一个业务需求,就是需要在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 <= #{endIndex} and t.label like                     '%${queryKey}%' )m
    where rum  >   #{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},  '%'))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息