SpringBoot整合pageHelper插件的时候主要分为以下几步?
1.在pom.xml中引入依赖
<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> </dependency>
2.在Application启动类中添加
//配置mybatis的分页插件pageHelper @Bean public PageHelper pageHelper(){ System.out.println("开始配置数据分页插件"); PageHelper pageHelper = new PageHelper(); Properties properties = new Properties(); properties.setProperty("offsetAsPageNum","true"); properties.setProperty("rowBoundsWithCount","true"); properties.setProperty("reasonable","true"); //配置mysql数据库的方言 properties.setProperty("dialect","mysql"); pageHelper.setProperties(properties); return pageHelper; }
3.构建PageVo类(这个PageVo可以根据个人情况进行拓展,添加相应的字段)
public class PageVo<T> implements Serializable{ private Integer count; private Integer pageSize; private Integer page; private List<T> data; public Integer getCount() { return count; } public void setCount(Integer count) { this.count = count; } public Integer getPageSize() { return pageSize; } public void setPageSize(Integer pageSize) { this.pageSize = pageSize; } public Integer getPage() { return page; } public void setPage(Integer page) { this.page = page; } public List<T> getData() { return data; } public void setData(List<T> data) { this.data = data; } }
4.下面就是封装数据了,我以我最近写的查询租赁列表的接口为例
1)Controller层
@Autowired private ProductService productService; @ApiOperation(value = "租赁商品列表", notes = "租赁商品列表") @ApiImplicitParams({ @ApiImplicitParam(name="pageSize",value = "每页的条数",required = false,dataType = "Integer",paramType = "query"), @ApiImplicitParam(name="page",value = "当前页数",required = false,dataType = "Integer",paramType = "query") }) @RequestMapping(value = "/rest/products/list", method = RequestMethod.GET) public ResponseEntity<JsonResultEntity> list(@RequestParam(value = "pageSize",required = false,defaultValue = "10")Integer pageSize, @RequestParam(value = "page",required = false,defaultValue = "1")Integer page) { ProductEntity params = new ProductEntity(); params.setType(ProductEnum.TYPE_RENT.getCode()); params.setIsDelete(ProductEnum.NOT_DELETE.getCode()); params.setIsSale(ProductEnum.SALE.getCode()); PageVo<ProductEntity> result = productService.list(params,pageSize,page); return ResponseEntity.ok(JsonResultUtils.success(result, MessageEnum.STATUS_OK.getCode(), MessageEnum.STATUS_OK.getMessage())); }
2)Service层(注意PageHelper做分页一定要在查询之前)
@Autowired private ProductMapper productMapper; @Override public PageVo<ProductEntity> list(ProductEntity params, Integer pageSize, Integer page) { PageVo<ProductEntity> pageVo=new PageVo(); pageVo.setPageSize(pageSize); pageVo.setPage(page); PageHelper.startPage(page,pageSize); List<ProductEntity> data = productMapper.listProduct(params); List<ProductEntity> resultAddCoverPre = new ArrayList<ProductEntity>(); for(ProductEntity productEntity:data) { productEntity.setCover(img_base_url + productEntity.getCover()); resultAddCoverPre.add(productEntity); } pageVo.setData(resultAddCoverPre); Integer count=productMapper.getCount(); pageVo.setCount(count); return pageVo; }3)mapper以及mapper.xml
select id="listProduct" parameterType="com.taozugong.dao.entity.ProductEntity" resultMap="BaseResultMap"> SELECT <include refid="Base_Column_List"/> FROM product <where> <if test="type != null"> type = #{type} </if> <if test="isDelete != null"> AND is_delete = #{isDelete} </if> <if test="isSale != null"> AND is_sale = #{isSale} </if> </where> </select>运行即可成功!