通用Mapper进行分页

通用Mapper进行分页

总结

使用通用Mapper进行作为持久层框架,使用比较简单,而且对一些单表操作,基本上可以全覆盖。而且可以自己扩展操作。这里写入如何搭配分页助手进行分页操作。只有关键代码,并不是一个完整案例。

1、导入坐标

<dependency>
    <!--通用Mapper依赖-->
    <groupId>tk.mybatis</groupId>
    <artifactId>mapper-spring-boot-starter</artifactId>
    <version>2.1.5</version>
</dependency>
<!--分页助手依赖-->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.2.12</version>
</dependency>

2、Service层编写

这里涉及到比较多的参数,我们在使用时候可以选择一部分进行使用

import com.github.pagehelper.PageInfo;
import com.github.pagehelper.PageHelper;
/**
     * 分页查询
     *
     * @param key    关键字查询
     * @param page   页数
     * @param size   每页数量
     * @param desc   排序方式
     * @param sortBy 需要排序的字段
     * @param status 用户状态
     * @return
     */
    public PageInfo<User> queryUserByPage(String key, int page, int size, Boolean desc, String sortBy, Boolean status) {
        //分页
        PageHelper.startPage(page, size);
        //过滤
        Example example = new Example(User.class);
        if (status != null) {
            example.setDistinct(status);
        }
        if (StringUtils.isNotBlank(key)) {
            //过滤条件
            example.createCriteria().orLike("username", "%" + key.toLowerCase() + "%").orEqualTo("phone",key.toLowerCase());
        }
        //根据相应的字段进行排序
        if (StringUtils.isNotBlank(sortBy)) {
            String orderByClause = sortBy + (desc ? " DESC" : " ASC");
            example.setOrderByClause(orderByClause);
        }
        //查询
        List<User> users = userMapper.selectByExample(example);
        if (CollectionUtils.isEmpty(users)) {
            return null;
        }
        users.stream().forEach(user -> user.setPassword(null));
        //解析分页结果
        return new PageInfo<>(users);
    }

注意:

1、这里的进行使用 PageHelper.startPage()之后,我们可以直接使用selectAll进行查询操作,照样可以进行分页操作

2、这里的返回结果,我们直接使用PageInfo作为返回结果,没有进行二次封装。可以使用hutool的PageResult进行作为返回结果。也可以进行自定义PageResult进行返回。

3、Controller层编写

  /**
     * 分页查询
     * @param key
     * @param page
     * @param size
     * @param desc
     * @param sortBy
     * @param status
     * @return
     */
    @GetMapping("/userList")
    public ResponseEntity<PageInfo<PageInfro<User>>> queryUserByPage(@RequestParam(value = "key", required = false) String key,
                                  @RequestParam(value = "page", defaultValue = "1") Integer page,
                                  @RequestParam(value = "rows", defaultValue = "5") Integer size,
                                  @RequestParam(value = "desc", defaultValue = "false") Boolean desc,
                                  @RequestParam(value = "sortBy", required = false) String sortBy,
                                  @RequestParam(value = "status", required = false) Boolean status) {
        PageInfo<User> pageInfo = userService.queryUserByPage(key, page, size, desc, sortBy, status);
        if (pageInfo == null) {
            return new Result(false, StatusCode.QUERY_FAIL);
        }
        return ResponseEntity.ok(pageInfo))
    }

注意,这里参数的写法。

原文地址:https://www.cnblogs.com/jimlau/p/13685944.html