1.分页概念
分页查询则是在页面上将本来很多的数据分段显示,每页显示用户自定义的行数。可提高用户体验度,同时减少一次性加载,内存溢出风险。
1.1.真分页
每次翻页从数据库中查询数据。
-
优点:不容易造成内存溢出。
-
缺点:实现复杂,性能相对低。
1.2假分页
一次性查询所有数据存入内存,翻页从内存中获取数据。
-
优点:实现简单,性能高。
-
缺点:容易造成内存溢出。
2、参数
2.1.用户需要传入的参数
-
currentPage(num/page):当前页,跳转到第几页,int 类型,设置默认值,比如 1。
-
pageSize(size/limit):每页最多多少条数据,int 类型,设置默认值,比如 10。
2.1.分页需要展示的数据
-
start:首页。
-
prevPage:上一页。
-
nextPage:下一页。
-
totalPage:末页页码。
-
totalCounts:总记录数。
-
currentPage:当前页。
-
pageSize:每页记录数。
3、实现代码
ssm
//方法接口 PageResult findPage(Integer currentPage, Integer pageSize, String queryString);
//实现类
public PageResult findPage(Integer currentPage, Integer pageSize, String queryString) { // 使用分页插件PageHelper// 1:初始化分页操作 PageHelper.startPage(currentPage,pageSize); // 2:使用sql语句进行查询(不必在使用mysql的limit了) Page<TravelItem> page = travelItemDao.findPage(queryString); // 3:封装 return new PageResult(page.getTotal(),page.getResult()); }
//dao层接口 public interface TravelItemDao { Page<TravelItem> findPage(String queryString); }
//映射文件 <select id="findPage" parameterType="string" resultType="travelItem"> select * from t_travelitem <where> <if test="value!=null and value.length>0"> name like "%"#{value}"%" or code=#{value} </if> </where> </select>
spring boot
//controller层 public R pageList( @ApiParam(value = "当前页码", required = true) @PathVariable Long page, @ApiParam(value = "每页记录数", required = true) @PathVariable Long limit, @ApiParam(value = "查询对象") HospitalSetQueryVo hospitalSetQueryVo){ //分页查询 Page<HospitalSet> pageModel = hospitalSetService.selectPage(page, limit,hospitalSetQueryVo); //获得当前分页的数据集合 List<HospitalSet> records = pageModel.getRecords(); //获得总页数 long total = pageModel.getTotal(); //返回结果集 return R.ok().data("total",total).data("rows",records);
//impl实现类 @Override public Page<HospitalSet> selectPage(Long page, Long limit, HospitalSetQueryVo hospitalSetQueryVo) { //1.分页查询,根据 Page<HospitalSet> pageMdel = new Page<>(page, limit); //2.查询条件 QueryWrapper<HospitalSet> queryWrapper = new QueryWrapper<>(); //2.1判空操作 if(hospitalSetQueryVo!=null){ queryWrapper.like(!StringUtils.isEmpty(hospitalSetQueryVo.getHosname()),"hosname",hospitalSetQueryVo.getHosname()); queryWrapper.eq(!StringUtils.isEmpty(hospitalSetQueryVo.getHoscode()),"hoscode",hospitalSetQueryVo.getHoscode()); } //3.调用父类的条件查询 ,无返回值,根据条件进行查询, baseMapper.selectPage(pageMdel,queryWrapper); //4.返回查询的page对象 return pageMdel; }
实例 page=1,limit=2 ,数据库中共有7条有效数据,
今天的文章分页查询_mysql的三种分页方法分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/48423.html