大家好,又见面了,我是你们的朋友全栈君。
Mybatis+Oracle 分页
1,使用mybatis的插件PageHelper
(1)Mapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace:填写的是监听的Mapper权限命名的接口 -->
<mapper namespace="cn.ssm.dao.StudentMapper">
<select id="selectUserinfo" resultType="cn.ssm.dao.bean.Userinfo">
select * from userinfo
</select>
</mapper>
(2)分页实现
public List<Userinfo> selectUserinfo() {
PageHelper.startPage(2, 3); //使用分页插件
List<Userinfo> userinfos =studentMapper.selectUserinfo();
PageInfo<Userinfo> infos=new PageInfo<Userinfo>(userinfos);
List<Userinfo> list = infos.getList();
return userinfos;
}
2,使用利用 rownum这个字段,oracle 数据库中特有的字段
(1)Mapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace:填写的是监听的Mapper权限命名的接口 -->
<mapper namespace="cn.ssm.dao.StudentMapper">
<select id="selectUserinfo" parameterType="cn.ssm.dao.bean.Userinfo" resultType="cn.ssm.dao.bean.Userinfo">
select * from ( select row_.*, rownum rownum_ from ( select * from userinfo ) row_
where rownum <= #{pageNum} * #{pageSize} ) where rownum_ > (#{pageNum} - 1) * #{pageSize}
</select>
</mapper>
(2)分页实现
public class Userinfo {
private int id;
private String name;
private String password;
private Integer pageNum;
private Integer pageSize;
}
public List<Userinfo> selectUserinfo() {
Userinfo user=new Userinfo();
user.setPageNum(2);//设置当前为第2页
user.setPageSize(3);//设置每页总共3条数据
List<Userinfo> userinfos = studentMapper.selectUserinfo(user);
return userinfos;
}
结果展示:
例子:select * from (select t.*,rownum r from (select * from A) t where rownum < 10)where r >5
第一层:select * from A:要查询的数据
第二层:select t.*,rownum r from (select * from A) t where rownum < 10:取前 10 行
第三层:select * from (select t.*,rownum r from (select * from A) t where rownum < 10)where r >5:取 5-10 行
说明: select * from ( select row_.*, rownum rownum_ from ( select * from userinfo ) row_ where rownum <= #{pageNum} * #{pageSize} )a where rownum_ > ( #{pageNum}- 1) * #{pageSize}
解析:先查询select * from userinfo 总条数并起个别名 row_,
然后查询select row_.*, rownum rownum_ from ( select * from userinfo ) row_ where rownum <= #{pageNum} * #{pageSize} ,把所有数据和rownum固定字段列查询并起别名,
最后从a中查询出想要的数据,主要是使用rownum固定字段列筛选实现分页 where rownum_ > ( #{pageNum}- 1) * #{pageSize}
小于号:<
大于号:>
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/140300.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...