MybatisPlus通过插件简化了分页查询
1.添加依赖
首先,确保您的项目中已经添加了MybatisPlus的依赖。
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3</version>
</dependency>
2.配置分页插件
在Spring Boot项目中,您需要配置MybatisPlus的分页插件。创建一个配置类:
@Configuration
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}
3.创建实体类
假设我们有一个User实体类:
@Data
public class User {
private Long id;
private String name;
private Integer age;
private String email;
}
4.创建Mapper接口
创建一个UserMapper接口,继承BaseMapper:
public interface UserMapper extends BaseMapper<User> {
}
5.实现分页查询
现在,您可以在Service层或Controller层中使用Page对象来实现分页查询:
//创建service接口
public interface UserService extends IService{
IPage<User> getUserPage(int current, int size);
}
-------------------------------------------------
@Service
public class UserServiceimpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public IPage<User> getUserPage(int current, int size) {
Page<User> page = new Page<>(current, size);
return userMapper.selectPage(page, null);
}
}
在这个例子中:
current
是当前页码size
是每页显示的记录数new Page<>(current, size)
创建一个分页对象userMapper.selectPage(page, null)
执行分页查询,第二个参数为null表示没有额外的查询条件
6.在Controller中使用
在Controller层调用service层中的分页功能
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/page")
public IPage<User> getUserPage(@RequestParam(defaultValue = "1") int current,
@RequestParam(defaultValue = "10") int size) {
return userService.getUserPage(current, size);
}
}
自定义查询条件
如果需要添加自定义查询条件,如按名字模糊匹配,可以使用QueryWrapper:
public IPage<User> getUserPage(int current, int size, String name) {
Page<User> page = new Page<>(current, size);
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.like(StringUtils.isNotBlank(name), "name", name);
return userMapper.selectPage(page, queryWrapper);
}
StringUtils.isNotBlank(name)
用于判断name
是否为空字符串,只有当name
不为空时才会添加模糊匹配条件。"name"
表示要匹配的字段名,这里是User
对象的name
属性。name
表示要匹配的值,即用户输入的用户名。
获取分页信息
getCurrent()
: 获取当前页码。getSize()
: 获取每页显示条数。getTotal()
: 获取总条数。getPages()
: 获取总页数。hasPrevious()
: 判断是否有上一页。hasNext()
: 判断是否有下一页。