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>