基于Spring Boot+Mybatis-Plus实现分页功能
添加依赖Mybatis-Plus
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.1</version>
</dependency>
配置文件(需要扫描的映射路径)
mybatis-plus:
mapper-locations: classpath:mapper/*.xml
添加Mybatis-Plus配置文件,新建config包,新建MybatisPlusConfig类
import com.baomidou.mybatisplus.annotation.DbType;
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;
import org.springframework.transaction.annotation.EnableTransactionManagement;
@EnableTransactionManagement
@Configuration
public class MybatisPlusConfig {
/**
* 注册插件
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 添加分页插件
PaginationInnerInterceptor pageInterceptor = new PaginationInnerInterceptor();
// 设置请求的页面大于最大页后操作,true调回到首页,false继续请求。默认false
pageInterceptor.setOverflow(false);
// 单页分页条数限制,默认无限制
pageInterceptor.setMaxLimit(500L);
// 设置数据库类型
pageInterceptor.setDbType(DbType.MYSQL);
interceptor.addInnerInterceptor(pageInterceptor);
return interceptor;
}
}
实体类
@Data
public class PageObject {
private Long pageNum; //页数
private Long size; //几条
private Long total; //总页数
private List data; //数据
}
mapper层
/**
* 分页
* @return
*/
Page<PageObject> selectPage(Page<PageObject> page, Object query);
mapper.xml
<!-- 基于mybatis plus分页 不用加 limit -->
<select id="selectPage" resultMap="StandardResultMap">
select
<include refid="StandardQueryFields"/> //这个是通过映射,你直接可以写 * 测试
from
node_info
</select>
service业务层
/**
* 分页
*/
PageObject inputList(PageObject pageObject);
@Override
public PageObject inputList(PageObject pageObject) {
//进行分页
//mybatis plus 分页组件
Page<PageObject> page = new Page<>(pageObject.getPageNum(), pageObject.getSize());
Page<PageObject> resultPage = nodeInfoMapper.selectPage(page,null);
PageObject result = new PageObject();
result.setPageNum(resultPage.getCurrent());
result.setSize(resultPage.getSize());
result.setTotal(resultPage.getTotal());
result.setData(resultPage.getRecords());
return result;
}
controller控制层
@GetMapping("/pageList")
@ApiOperation("分页查询")
public PageObject pageList(PageObject pageObject){
log.info("开始执行查分页查询....");
PageObject pageList = nodeInfoService.inputList(pageObject);
return pageList;
}
业务实现( Knife4j测试 )