马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
在 MyBatis Plus 中使用 @Select 自界说 SQL 实现通用的分页查询,可按以下步调操纵:
1. 设置分页插件
起首,必要在项目中设置 MyBatis Plus 的分页插件。以 Spring Boot 项目为例,在设置类中添加分页插件的 Bean:- import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
- import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- @Configuration
- public class MyBatisPlusConfig {
- @Bean
- public MybatisPlusInterceptor mybatisPlusInterceptor() {
- MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
- interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
- return interceptor;
- }
- }
复制代码 2. 界说实体类
假设我们有一个 User 实体类:- import com.baomidou.mybatisplus.annotation.TableName;
- @TableName("user")
- public class User {
- private Long id;
- private String name;
- private Integer age;
- // 构造函数、Getter 和 Setter 方法
- public User() {}
- public User(Long id, String name, Integer age) {
- this.id = id;
- this.name = name;
- this.age = age;
- }
- public Long getId() {
- return id;
- }
- public void setId(Long id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public Integer getAge() {
- return age;
- }
- public void setAge(Integer age) {
- this.age = age;
- }
- @Override
- public String toString() {
- return "User{" +
- "id=" + id +
- ", name='" + name + '\'' +
- ", age=" + age +
- '}';
- }
- }
复制代码 3. 界说 Mapper 接口
在 Mapper 接口中使用 @Select 注解编写自界说 SQL,并吸取 Page 对象作为参数:- import com.baomidou.mybatisplus.core.mapper.BaseMapper;
- import com.baomidou.mybatisplus.core.metadata.IPage;
- import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
- import org.apache.ibatis.annotations.Select;
- public interface UserMapper extends BaseMapper<User> {
- @Select("SELECT * FROM user WHERE age > #{age}")
- IPage<User> selectUserByAge(Page<User> page, Integer age);
- }
复制代码 4. 实现分页查询服务
在服务层调用 Mapper 接口的方法举行分页查询:- import com.baomidou.mybatisplus.core.metadata.IPage;
- import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- @Service
- public class UserService {
- @Autowired
- private UserMapper userMapper;
- public IPage<User> getUserByAgePage(Integer pageNum, Integer pageSize, Integer age) {
- Page<User> page = new Page<>(pageNum, pageSize);
- return userMapper.selectUserByAge(page, age);
- }
- }
复制代码 5. 调用分页查询方法
在控制器或测试类中调用服务层的方法举行分页查询:- import com.baomidou.mybatisplus.core.metadata.IPage;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.web.bind.annotation.GetMapping;
- import org.springframework.web.bind.annotation.RequestParam;
- import org.springframework.web.bind.annotation.RestController;
- @RestController
- public class UserController {
- @Autowired
- private UserService userService;
- @GetMapping("/users")
- public IPage<User> getUsers(@RequestParam Integer pageNum, @RequestParam Integer pageSize, @RequestParam Integer age) {
- return userService.getUserByAgePage(pageNum, pageSize, age);
- }
- }
复制代码 表明
- 分页插件设置:MybatisPlusInterceptor 是 MyBatis Plus 的拦截器,PaginationInnerInterceptor 是分页拦截器,用于实现分页功能。
- Mapper 接口:@Select 注解中的 SQL 是自界说的查询语句,Page 对象作为参数传入,MyBatis Plus 会主动处理处罚分页逻辑。
- 服务层:创建 Page 对象,设置当前页码和每页记载数,调用 Mapper 接口的方法举行分页查询。
- 控制器:吸取前端传入的页码、每页记载数和查询条件,调用服务层的方法举行分页查询并返回结果。
通过以上步调,就可以在 MyBatis Plus 中使用 @Select 自界说 SQL 实现通用的分页查询。
|