分页查询_mysql的三种分页方法

分页查询_mysql的三种分页方法1.分页概念 分页查询则是在页面上将本来很多的数据分段显示,每页显示用户自定义的行数。可提高用户体验度,同时减少一次性加载,内存溢出风险。 1.1.真分页 每次翻页从数据库中查询数据。 优点:不容易造成内存溢出。 缺点:实现复杂,性能相对低。 1.2假分页 一次性查询所有数据存入内存,翻页从内存中获

1.分页概念

  分页查询则是在页面上将本来很多的数据分段显示,每页显示用户自定义的行数。可提高用户体验度,同时减少一次性加载,内存溢出风险。

1.1.真分页

每次翻页从数据库中查询数据。

  1. 优点:不容易造成内存溢出。

  2. 缺点:实现复杂,性能相对低。

1.2假分页

一次性查询所有数据存入内存,翻页从内存中获取数据。

  1. 优点:实现简单,性能高。

  2. 缺点:容易造成内存溢出。

2、参数

2.1.用户需要传入的参数

  1. currentPage(num/page):当前页,跳转到第几页,int 类型,设置默认值,比如 1。

  2. pageSize(size/limit):每页最多多少条数据,int 类型,设置默认值,比如 10。

2.1.分页需要展示的数据

  1. start:首页。

  2. prevPage:上一页。

  3. nextPage:下一页。

  4. totalPage:末页页码。

  5. totalCounts:总记录数。

  6. currentPage:当前页。

  7. 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的三种分页方法

 

今天的文章分页查询_mysql的三种分页方法分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/48423.html

(0)
编程小号编程小号
上一篇 2023-09-04 07:17
下一篇 2023-09-04 07:46

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注