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;
    }
}
编写不易,如果对您有帮助,点赞,收藏,评论 三连支持下博主就是对博主最大的鼓励~~~

 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号