Mybatis分页插件PageHelper查询ORACLE数据库⽰例总之,可以⼿动配置,也可以不⼿动配置,PageHelper会⾃动分辨出数据库类型(⽀持的范围内)
并且mybatis是count先select后,也就是说count出数据才会继续select,这点避免了⽆效查询,有时候光看⽇志时这点容易被坑。 和数据源是mysql⼀样,PageHelper可以⾃动识别出来并通过不同的代理⽅法去分页~
public List<Map<String, Object>> getCarByNo(String plateno, int pagenum, int pagesize) {
// TODO Auto-generated method stub
List<Map<String, Object>> list = null;
String start =(pagenum-1)*pagesize+1+"";
String end = pagenum*pagesize+"";
list = CarByNo(plateno,start,end);
return list;
}
serivice的编写
参数⼀传⼊车辆编号,参数⼆传⼊页数,参数三传⼊每页个数
解释:String start =(pagenum-1)*pagesize+1
例如页数传⼊1,(1-1)*5+1 =1 起始数据就是为1,每页个数为5,所以开始就是第⼀⾏开始
例如页数传⼊5,(5-1)*5+1=21 起始数据就是为5,每页个数为5,所以开始的第⼀⾏就是21
解释:String end = pagenum*pagesize
例如页数传1,他的结束条数就是第5条
例如页数传5,他的结束条数就是第25条
MapperDao的编写
List<Map<String, Object>> getCarByNo(@Param("plateno")String plateno, @Param("start")String start, @Param("end")String end);
没什么要太注意的
MapperXML的编写
select * from(
select t.*,rownum rn from(
select *
from VRESOURCE_CAR c
where c.PLATENO like concat(concat('%',#{plateno,jdbcType=VARCHAR}),'%')) t
where rownum < #{end,jdbcType=INTEGER}
)分页查询插件
where rn >#{start,jdbcType=INTEGER}
主要要理解这种分页的中⼼思想,⾸先他是先去查所有符合条件的数据
然后再去取这堆数据的结束点或者是结束⾏,这些数据再作为⼀个表去查询
再去⽤这个表查询起始⾏到结束⾏的条数,就这么简单的完成啦
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
PageHelp的使⽤⼩⽰例
以下使⽤springboot做为演⽰,⾸先添加依赖
<!-- mvnrepository/artifact/com.github.pagehelper/pagehelper-spring-boot-starter -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.5</version>
</dependency>
</dependencies>
Controller
@ApiOperation("ehcache分页查询")
@GetMapping("pagefind")
public List<Map<String, Object>> pagefind(int page,int size){
return ehcacheservice.pagefind(page,size);
}
Service
public List<Map<String, Object>> pagefind(int page, int size) {
PageHelper.startPage(page, size);//重点就这⼀⾏代码
return ehcachemapper.findpage();
}
这样就可以返回所输⼊参数的分页。。。。但是返回的值只有数据没有总数。
下⾯是⼩进阶
public Map<String, Object> pagefind(int page, int size) {
PageHelper.startPage(page, size);//重点就这⼀⾏代码,下⾏紧跟查询语句
List<Map<String, Object>> findpage = ehcachemapper.findpage();
PageInfo<Map<String, Object>> pageInfo = new PageInfo<>(findpage);//传⼊Pagehelper提供的类获取参数信息
HashMap<String, Object> map = new HashMap<>();//新建⼀个map装填数据
map.put("list", findpage);
map.put("total", Total());//获取数据总数
map.put("size", PageSize());//获取长度
map.put("page", PageNum());//获取当前页数
return map;
}
这样就完美啦
本⼈测试不⽤配置Bean或者properties信息也能正常分页查询,如果出现什么问题可以考虑⼀下设置配置bean
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论