springboot - 新版分页

1、依赖

<dependency>
      <groupId>com.baomidou</groupId>
      <artifactId>mybatis-plus-boot-starter</artifactId>
      <version>3.4.1</version>
 </dependency>

2、请求和返回封装

@Data
@ApiModel(value = "公共分页对象", description = "公共分页请求对象")
public class PageRequest<T> implements Serializable {
    @ApiModelProperty(value = "当前页", example = "1", required = true)
    @JsonProperty("page_num")
    private Integer pageNum;

    @ApiModelProperty(value = "一页多少条", example = "100", allowableValues = "10,20,30,40,50,100,500,1000", required = true)
    @JsonProperty("page_size")
    private Integer pageSize;

    @ApiModelProperty(value = "排序字段")
    @JsonProperty("order_by")
    private String  orderBy;

    @ApiModelProperty(value = "排序类型,DESC、ASC", allowableValues = "DESC,ASC")
    @JsonProperty("order_by_type")
    private String  orderByType;

    @ApiModelProperty(value = "分页查询请求参数")
    private T       param;

    public int getPageNum() {
        if (this.pageNum == null || this.pageNum < 1) {
            return 1;
        }
        return this.pageNum;
    }

    public int getPageSize() {
        if (this.pageSize == null || this.pageSize < 1) {
            return 100;
        }
        return this.pageSize;
    }
}
@Data
@ApiModel(value = "公共分页响应对象", description = "公共分页响应对象")
public class PageResult<T> implements Serializable {

    @ApiModelProperty("总记录数")
    @JsonProperty("total_record")
    private Long    totalRecord;

    @ApiModelProperty("当前分页总页数")
    @JsonProperty("total_page")
    private Long    totalPage;

    @ApiModelProperty("分页记录列表")
    @JsonProperty("current_data")
    private List<T> currentData;
}

3、config

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;

@Configuration
@MapperScan("com.mapper")
public class MybatisPlusPageConfig {

    /**
     * 新版分页插件
     *
     * @return
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
        mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
        mybatisPlusInterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
        return mybatisPlusInterceptor;
    }
    
    
    @Bean
    public MyInjector myInjector(){
        return new MyInjector();
    }

}

4、myInject.java

import java.util.List;
import com.baomidou.mybatisplus.core.injector.AbstractMethod;
import com.baomidou.mybatisplus.core.injector.DefaultSqlInjector;

public class MyInjector extends DefaultSqlInjector  {

    @Override
    public List<AbstractMethod> getMethodList(Class<?> mapperClass) {
        // 注意:此SQL注入器继承了DefaultSqlInjector(默认注入器),调用了DefaultSqlInjector的getMethodList方法,保留了mybatis-plus的自带方法
        List<AbstractMethod> methodList = super.getMethodList(mapperClass);
        methodList.add(new InsertBatchMethod());
        methodList.add(new UpdateBatchMethod());
        return methodList;
    }
 
}

5、实例

controller.java

@PostMapping("page_list")
public PageResult<Vo> pageList(@RequestBody PageRequest<Req> request) {
    return sevice.pageList(request);
}

service.java

PageResult<Vo> pageList(PageRequest<Req> request);

 serviceImpl.java

@Override
public PageResult<Vo> pageList(PageRequest<Req> request) {
    IPage<Vo> page = new Page<>(request.getPageNum(), request.getPageSize());
    IPage<Vo> pageRecord = Mapper.list(page,request.getParam().getParam1(), request.getParam().getParam2());
    PageResult<Vo> pageResult = new PageResult<>();
    pageResult.setTotalRecord(pageRecord.getTotal());
    pageResult.setTotalPage(pageRecord.getPages());
    pageResult.setCurrentData(pageRecord.getRecords());
    return pageResult;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot中使用MyBatis-Plus进行分页,你可以按照以下步骤进行操作: 1. 首先,确保已经在你的项目中引入了MyBatis-Plus的依赖。你可以在pom.xml文件中添加如下依赖: ```xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>最新版本号</version> </dependency> ``` 2. 创建一个实体类,用于映射数据库表的字段。你可以在实体类中添加一些分页相关的属性,如分页大小、当前页码等。 3. 创建一个Mapper接口,继承自MyBatis-Plus的BaseMapper接口。在该接口中,你可以使用MyBatis-Plus提供的一些方法进行分页查询。例如,使用`selectPage()`方法进行分页查询。 4. 在Service层中调用Mapper接口中的方法进行分页查询。你可以传入一个`Page`对象作为参数,设置分页相关的属性。例如,设置当前页码、分页大小等。 5. 在Controller层中调用Service层的方法进行数据返回。将查询结果封装到一个`Page`对象中,并返回给前端。 下面是一个简单的示例代码: ```java // 实体类 @Data public class User { private Long id; private String name; // 其他字段... } // Mapper接口 public interface UserMapper extends BaseMapper<User> { } // Service层 @Service public class UserService { @Autowired private UserMapper userMapper; public IPage<User> getUserList(Page<User> page) { return userMapper.selectPage(page, null); } } // Controller层 @RestController public class UserController { @Autowired private UserService userService; @GetMapping("/users") public IPage<User> getUserList(@RequestParam(defaultValue = "1") Integer pageNum, @RequestParam(defaultValue = "10") Integer pageSize) { Page<User> page = new Page<>(pageNum, pageSize); return userService.getUserList(page); } } ``` 这样,你就可以在Spring Boot中使用MyBatis-Plus进行分页查询了。当访问`/users`接口时,会返回分页后的用户列表数据。你可以通过请求参数指定页码和每页大小。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值