Mybatis查询ORACLE数据库分页示例

	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}

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

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

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


猜你喜欢

转载自blog.csdn.net/jiulanhao/article/details/80664396
今日推荐