• Mybatis-Plus 分页示例


    Mybatis-Plus 分页通常我们使用 PageHelper、IPage。PageHelper,以往的博客中有使用到,今天我们来使用 Ipage 做一个基础的分页示例。(Spring Boot+MybatisPlus)

    1. 首先导入需要的Jar包

    <dependency>
           <groupId>com.baomidou</groupId>
           <artifactId>mybatis-plus-boot-starter</artifactId>
           <version>3.0.5</version>
    </dependency>
    

    2. 使用IPage需要注入一个bean拦截器交给spring进行管理

    注: 3.4.0 及版本对此部分有更新,同时idea会提示PaginationInterceptor过时,新版本改用了MybatisPlusInterceptor

    @Configuration
    @MapperScan("com.feifeiye.mapper") // 扫描mapper接口
    public class Config {
    
        @Bean
        public PaginationInterceptor paginationInterceptor() {
            return new PaginationInterceptor();
        }
    
        // 最新版
        @Bean
        public MybatisPlusInterceptor mybatisPlusInterceptor() {
            MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
            interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
            return interceptor;
        }
    }
    
    

    3. Mapper 层

    @Mapper
    public interface UserMapper extends BaseMapper<User> {
    
    }
    

    4. 接口 AND 实现

    接口:

    public interface UserService extends IService<User> {
    
        IPage<User> findPage(Page<User> pageParam, UserQuery userQuery);
    }
    

    实现类:

    @Service
    public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
    
        /**
         * 条件分页查询
         */
        @Override
        public IPage<User> findPage(Page<User> pageParam, UserQuery userQuery) {
            QueryWrapper<User> queryWrapper = new QueryWrapper<>();
            /*非空则加入条件*/
            if (!StringUtils.isEmpty(userQuery.getName())) {
                queryWrapper.like("name", userQuery.getName());
            }
            if (!StringUtils.isEmpty(userQuery.getPhone())){
                queryWrapper.like("phone", userQuery.getPhone());
            }
            if (!StringUtils.isEmpty(userQuery.getStatus())){
                queryWrapper.eq("status", userQuery.getStatus());
            }
            IPage<User> userPage = baseMapper.selectPage(pageParam, queryWrapper);
            return userPage;
        }
    }
    

    5. Controller 层

    注: UserQuery 为查询对象,可根据实际业务编写,或直接传入需要查询的参数。

    @RestController
    @RequestMapping("/user")
    public class UserController {
    
        @Autowired
        private UserService userService;
    
        /**
         *  分页讲师条件查询
         */
        @GetMapping("{page}/{limit}")
        public IPage<User> findPage(
                               @PathVariable(value = "page") Long page,
                               @PathVariable(value = "limit") Long limit,
                               UserQuery userQuery)
        {
            Page<User> pageParam = new Page<User>(page, limit);
            IPage<User> pageResult=userService.findPage(pageParam, userQuery);
            return pageResult;
        }
    
    }
    

    编写不易,如果对您有帮助,点赞,收藏,评论 三连支持下博主就是对博主最大的鼓励~~~

  • 相关阅读:
    图的深度优先遍历(邻接表,递归,非递归)
    图的深度优先遍历(邻接矩阵,递归,非递归)
    【转】C语言邻接表的实现
    图的存储
    堆排序_C实现
    快排_C实现
    交换二叉树中所有结点的左右子树的位置
    二叉树层次遍历_判断结点所属层次
    二叉树_非递归先中后序_递归非递归求深度
    二叉树非递归遍历(前、中、后)
  • 原文地址:https://www.cnblogs.com/papercy/p/15339947.html
Copyright © 2020-2023  润新知