引入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 ) ; }
}