zoukankan      html  css  js  c++  java
  • 通用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))
        }
    

    注意,这里参数的写法。

  • 相关阅读:
    括号匹配的检验
    学习过程中遇到的比较有价值的博客--整理
    Spring+SpringMVC+MyBatis的pom.xml依赖
    Hibernate内容详解
    Struts2的拦截器配置
    Maven构建Struts2项目
    Mybatis增删改查,Demo整合
    简单Java类 全网最详细讲解 !!!
    Javaoop 遇到的问题
    Bootstrap 前端框架 遇到的问题 解决方案
  • 原文地址:https://www.cnblogs.com/jimlau/p/13685944.html
Copyright © 2011-2022 走看看