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;
    }

}
上一篇:Linux中常见实时进程的一些示例


下一篇:querywrapper条件构造器