如何用easyUI做Oracle的分页

            最近用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时会先进行编译,而< ,>,<=,>=这些符号不能被编译,所以我们应该用转义符号来代替

一些常用的转义符号

    &lt;          < 

    &gt;          >  

    &lt;&gt;   <>

    &amp;      & 

    &apos;      '

    &quot;      "

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

所以写法就变成了这样

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


希望能帮助到看到的你










  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值