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

如何用easyUI做Oracle的分页

2016-09-02 15:07 155 查看
            最近用Oracle数据库做开发,因为以前没有用过,碰到了很多问题,这里写下自己做Oracle分页的经过,防止以   后忘记.

     一 首先用Oracle写分页应当知道Oracles数据库rownum属性,rownum是伪列,是oracle自动添加的,假设rownum>2,他会从第一条开始检索,他会查到rownum=1不满足条件,于是被抛弃,然后继续找第二条
但是,第一条已经被抛弃,在找第二条时,Oracle会把第二条的rownum设置为1,在判断第二条是否满
足条件,同样不满足,于是就发生了死循环一样的判断,最终返回空,所以在伪列的判断中不可以有>,
>=,=这些符号存在.
    解决的方法:
先查询并为每条数据分配rownum,是rownum真是存在于表中,然后在去查询

select * from
(select u.*,rownum rn
from t_user u
where ....) us
where us.rn>0 and us.rn<=2
这样就可以进行查询了.

二丶对easyUI传递的数据进行处理
easyUI分页组件会给后台传递两个参数,分别是page(当前页)和rows(每页显示的条数)
这是我们就要利用这两个参数对我们的sql进行处理:
在方法中进行处理
HashMap<String, Integer> map = new HashMap<String, Integer>();
map.put("page", (page*rows-rows));
map.put("rows", (page*rows));
select * from
(select u.*,rownum rn from t_user u
where ......) us
where us.rn>#{page} and us.rn<=#{rows}


三丶mybatis中特殊符号的处理
如果将上述代码写道mybatis中会直接报错,因为mybatis在发送sql时会先进行编译,而< ,>,<=,>=这些符号不能被编译,所以我们应该用转义符号来代替
一些常用的转义符号
    <          < 

    >          >  

    <>   <>

    &      & 

    '      '

    "      "

还有一种方法是用<![CDATA[写你的sql语句 ]]>进行说明在这个符号中的代码不会进行编译,直接发送

所以写法就变成了这样

select * from
(select u.*,rownum rn from t_user u
where .....) us
where us.rn<![CDATA[>]]>#{page} and us.rn<![CDATA[<=]]>#{rows}





希望能帮助到看到的你


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: