SpringBoot 和 PageHelper实现分页 & 传统分页

PageHelper的使用

传统的分页:

controller

    /**
     * 查询所有
     * @param page 当前页
     * @param rows 每页展示的条数
     */
    @GetMapping("findByPage")
    public Map<String, Object> findByPage(Integer page, Integer rows) {
        page = page == null ? 1 : page;
        rows = rows == null ? 3 : rows;
        HashMap<String, Object> map = new HashMap<>();
        // 分页处理
        List<Province> provinces = provinceService.findByPage(page, rows);
        // 计算总页数
        Integer totals = provinceService.findTotals();
        Integer totalPage = totals % rows == 0 ? (totals / rows) : (totals / rows + 1);

        map.put("provinces", provinces);
        map.put("totals", totals);
        map.put("totalPage", totalPage);
        map.put("page", page);
        return map;
    }

service

public interface ProvinceService {
    // 分页查询:当前页 每页显示条数
    List<Province> findByPage(Integer page,Integer rows);
    
    // 查询总条数
    Integer findTotals();
}

serviceImpl:

@Service
@Transactional
public class ProvinceServiceImpl implements ProvinceService {

    @Resource
    private ProvinceDao provinceDao;

    @Override
    public List<Province> findByPage(Integer page, Integer rows) {
        int start  = (page - 1) * rows;
        return provinceDao.findByPage(start, rows);
    }

    @Override
    public Integer findTotals() {
        return provinceDao.findTotals();
    }
}

dao层:

public interface BaseDao<T,K> {

    // 分页查询
    List<T> findByPage(@Param("start") Integer start,@Param("rows") Integer rows);

    // 总条数
    Integer findTotals();
}

@Mapper
public interface ProvinceDao extends BaseDao<Province,String>{
}

mapper文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.zhuicat.dao.ProvinceDao">
    <!-- 分页查询所有 -->
    <select id="findByPage" resultType="Province">
        select id,name,tags,placecounts
        from t_province
        order by placecounts
        limit #{start},#{rows}
    </select>

    <!-- 查询总条数 -->
    <select id="findTotals" resultType="integer">
        select count(id) from t_province
    </select>
</mapper>
Page Helper

pom文件:

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.3.0</version>
</dependency>

application.properties文件:

# pageHelper
pagehelper.helper-dialect=mysql
pagehelper.reasonable=true
pagehelper.support-methods-arguments=true

controller层:

/**
     * @param page 当前页
     * @param rows 每页的条数
     */
    @GetMapping("findByPage")
    public Map<String, Object> findByPage(Integer page, Integer rows) {
        page = page == null ? 1 : page;
        rows = rows == null ? 3 : rows;
        // 查询所有
        PageHelper.startPage(page,rows);
        List<Province> provinces = provinceService.findAll();
        PageInfo<Province> pageInfo = new PageInfo<>(provinces);
        // 总条数
        long total = pageInfo.getTotal();
        // 总页数
        int pages = pageInfo.getPages();
        // 查询出来的数据
        List<Province> list = pageInfo.getList();
        HashMap<String, Object> map = new HashMap<>();

        map.put("provinces", list);
        map.put("totals", total);
        map.put("totalPage", pages);
        map.put("page", page);
        return map;
    }

service:

public interface ProvinceService {
    // 查询所有
    List<Province> findAll();
}

serviceImpl:

@Service
@Transactional
public class ProvinceServiceImpl implements ProvinceService {
    @Override
    public List<Province> findAll() {
        return provinceDao.findAll();
    }
}

dao层:

public interface BaseDao<T,K> {
    // 查询所有
    List<T> findAll();
}

@Mapper
public interface ProvinceDao extends BaseDao<Province,String>{
}

mapper文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.zhuicat.dao.ProvinceDao">
    <!-- 查询所有 -->
    <select id="findAll" resultType="Province">
        select id,name,tags,placecounts
        from t_province
    </select>
</mapper>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值