如何用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));
三丶mybatis中特殊符号的处理
如果将上述代码写道mybatis中会直接报错,因为mybatis在发送sql时会先进行编译,而< ,>,<=,>=这些符号不能被编译,所以我们应该用转义符号来代替
一些常用的转义符号
< <
> >
<> <>
& &
' '
" "
还有一种方法是用<![CDATA[写你的sql语句 ]]>进行说明在这个符号中的代码不会进行编译,直接发送
所以写法就变成了这样
希望能帮助到看到的你
一 首先用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}
希望能帮助到看到的你
相关文章推荐
- 如何用easyUI做Oracle的分页
- oracle中如何用rownum实现分页
- oracle如何做到分页
- Sql Server 2000,Sql Server 2005以及Oracle下如何实现数据分页
- 教您如何解决oracle分页查询数据重复问题
- 请说下mysql和oracle分页如何实现
- easyui 通用的datagrid中如何带有查询条件分页
- 如何解决easyui-datagrid分页组件中文显示的问题
- 后台使用oracle前台使用easyui分页机制
- Easyui的datagrid中有分页,如何设置分页刷新按钮
- 如何解决oracle分页查询数据重复问题
- Oracle, SQL Server, My SQL如何实现数据分页查询语句
- easyui中的分页实现(支持MySQL,SQLServer,Oracle)
- oracle 如何在group by 的语句中使用rownum,实现分页
- springmvc mybatis 分页 控制层及sql语句 oracle mysql easyui
- 在Oracle中如何实现分页
- oracle 中 分页如何写啊//
- mysql、sqlserver、DB2、oracle如何分页
- Oracle, SQL Server, My SQL如何实现数据分页查询语句
- 如何解决easyui-datagrid分页组件中文显示的问题