- 引入
MyBatis-Plus
依赖,下面注意指定自己的MyBatis-Plus
版本。
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
- 配置分页查询插件,将其配置到启动类或者配置类都可以。
@Bean
@ConditionalOnMissingBean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(DbType.MYSQL);
paginationInnerInterceptor.setMaxLimit(200L);
interceptor.addInnerInterceptor(paginationInnerInterceptor);
return interceptor;
}
- 准备好数据库表,以及对应的实体类,并且准备好对应的
mapper
以及service
。
@TableName("t_user")
@Data
@ToString
@NoArgsConstructor
@AllArgsConstructor
public class User {
@TableId(value = "id", type = IdType.ASSIGN_ID)
private Long id;
@TableField("name")
private String name;
private Integer age;
private String email;
private SexEnum sex;
@TableLogic
private Integer isDelete;
}
@Repository
public interface UserMapper extends BaseMapper<User> {}
- 封装
vo
类返回Page
对象
import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.Data;
import java.util.Objects;
@Data
public class PageQuery<T> {
private final static Integer DEFAULT_PAGE_NUM = 1;
private final static Integer DEFAULT_PAGE_SIZE = 5;
private Integer pageNo = DEFAULT_PAGE_NUM;
private Integer pageSize = DEFAULT_PAGE_SIZE;
private String sortBy = "age";
private Boolean isAsc = true;
public Page<T> toMpPage(String sortBy, Boolean isAsc, Integer pageNo, Integer pageSize) {
if (!StringUtils.isBlank(sortBy)) {
this.sortBy = sortBy;
}
if (!Objects.isNull(isAsc)) {
this.isAsc = isAsc;
}
if (!Objects.isNull(pageNo)) {
this.pageNo = pageNo;
}
if (!Objects.isNull(pageSize)) {
this.pageSize = pageSize;
}
Page<T> page = new Page<>(this.pageNo, this.pageSize);
OrderItem orderItem = new OrderItem();
orderItem.setAsc(this.isAsc);
orderItem.setColumn(this.sortBy);
page.addOrder(orderItem);
return page;
}
}
- 测试分页结果
public class TestPage {
@Autowired
private UserMapper userMapper;
@Test
public void testPage() {
PageQuery<User> pageQuery = new PageQuery<>();
Page<User> page = pageQuery.toMpPage("age", true, 1, 5);
Page<User> resPage = userMapper.selectPage(page, new LambdaQueryWrapper<>());
System.out.println(resPage.getCurrent());
System.out.println(resPage.getSize());
System.out.println(resPage.getPages());
System.out.println(resPage.getTotal());
List<User> records = resPage.getRecords();
records.forEach(System.out::println);
}
}