Mybatis-plus分页两种方式
1、前置条件配置
1、引入依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.2</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-extension</artifactId>
<version>3.5.2</version>
</dependency>
2、配置分页拦截器
@Configuration
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}
2、方式一:结合动态SQL
1、请求参数实体类
@Data
public class QueryPageParam {
private String age;
private int pageIndex;
private Integer pageSize;
}
2、controller层方法
@PostMapping("/queryPage")
public ResponseData<Object> queryPage(@RequestBody QueryPageParam queryPageParam) {
try {
int pageIndex = queryPageParam.getPageIndex() == 0 ? 1 : queryPageParam.getPageIndex();
int pageSize = queryPageParam.getPageSize() == 0 ? 20 : queryPageParam.getPageSize();
Page<User> page = new Page<>(pageIndex, pageSize);
IPage<User> queryPageUser = userMapper.queryPageUser(page, queryPageParam.getAge());
return new ResponseData<>(StatusCodeEnum.SUCCESS_CODE.getStatusCode(), queryPageUser.getRecords(),"操作成功");
} catch (Exception e) {
log.error("异常信息: " + e.getMessage(), e);
return new ResponseData<>(StatusCodeEnum.ERROR_CODE.getStatusCode(), "操作失败:" + e.getMessage());
}
}
3、DAO数据持久层
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
uid, username, password, address, birthday, age, amount, type, status
</sql>
<select id="queryPageUser" resultType="com.java.bus.model.entity.User">
SELECT <include refid="Base_Column_List"/>
FROM USER
<where>
<if test="age != null and age != ''">
age = #{age}
</if>
</where>
</select>
3、方式二:lambda查询包装器
controller层方法
@PostMapping("/queryPage")
public ResponseData<Object> queryPage(@RequestBody QueryPageParam queryPageParam) {
try {
int pageIndex = queryPageParam.getPageIndex() == 0 ? 1 : queryPageParam.getPageIndex();
int pageSize = queryPageParam.getPageSize() == 0 ? 20 : queryPageParam.getPageSize();
Page<User> page = new Page<>(pageIndex, pageSize);
LambdaQueryWrapper<User> wrapper = Wrappers.lambdaQuery(User.class);
if (CharSequenceUtil.isNotBlank(queryPageParam.getAge())) {
wrapper.eq(User::getAge, queryPageParam.getAge());
}
Page<User> queryPageUser = userMapper.selectPage(page, wrapper);
return new ResponseData<>(StatusCodeEnum.SUCCESS_CODE.getStatusCode(), queryPageUser.getRecords(),"操作成功");
} catch (Exception e) {
log.error("异常信息: " + e.getMessage(), e);
return new ResponseData<>(StatusCodeEnum.ERROR_CODE.getStatusCode(), "操作失败:" + e.getMessage());
}
}