Mybatis查询ORACLE数据库基本分页示例和使用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 = mapper.getCarByNo(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 &lt; #{end,jdbcType=INTEGER}
		)
		where rn &gt;#{start,jdbcType=INTEGER}

主要要理解这种分页的中心思想,首先他是先去查所有符合条件的数据

然后再去取这堆数据的结束点或者是结束行,这些数据再作为一个表去查询

再去用这个表查询起始行到结束行的条数,就这么简单的完成啦

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

PageHelp的使用小示例

以下使用springboot做为演示,首先添加依赖

		<!-- https://mvnrepository.com/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", pageInfo.getTotal());//获取数据总数
		
		map.put("size", pageInfo.getPageSize());//获取长度
		
		map.put("page", pageInfo.getPageNum());//获取当前页数
		
		return map;
	}

这样就完美啦

本人测试不用配置Bean或者properties信息也能正常分页查询,如果出现什么问题可以考虑一下设置配置bean

  • 6
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值