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