IPage和Page的关系
IPage是一个接口,Page是IPage的一个实现类,如下所示:
MybatisPlus实现分页查询
实现步骤:
- 配置分页插件
- 使用Page对象
配置分页插件
package springboot.mybatisplus.config;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
/**
* @Description MybatisPlus配置类
* @ClassName MybatisPlusConfig
* @Author yuhuofei
* @Date 2022/4/3 15:20
* @Version 1.0
*/
@Configuration
@EnableTransactionManagement
@MapperScan("springboot.mybatisplus.mapper")
public class MybatisPlusConfig {
//配置分页插件
@Bean
public MybatisPlusInterceptor paginationInnerInterceptor() {
MybatisPlusInterceptor innerInterceptor = new MybatisPlusInterceptor();
//指定数据库类型为Mysql
innerInterceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return innerInterceptor;
}
}
使用Page对象,写方法测试
1、在测试类中,加入以下方法,然后执行该方法
@Test
public void testPage() {
Page<MybatisPlusUser> page = new Page<>(2, 3);
Page<MybatisPlusUser> mybatisPlusUserPage = mybatisPlusUserMapper.selectPage(page, null);
mybatisPlusUserPage.getRecords().forEach(System.out::println);
}
2、执行过程如下
JDBC Connection [HikariProxyConnection@2146654783 wrapping com.mysql.cj.jdbc.ConnectionImpl@26dc9bd5] will not be managed by Spring
==> Preparing: SELECT COUNT(*) AS total FROM mybatis_plus_user
==> Parameters:
<== Columns: total
<== Row: 5
<== Total: 1
==> Preparing: SELECT id,name,age,email,create_time,update_time,version FROM mybatis_plus_user LIMIT ?,?
==> Parameters: 3(Long), 3(Long)
<== Columns: id, name, age, email, create_time, update_time, version
<== Row: 1646546496498463, 李一, 29, 567468955@qq.com, 2022-04-03 17:17:26, 2022-04-03 17:17:29, 1
<== Row: 1508489260037705729, 张三, 30, 1ddgds97@qq.com, 2022-03-29 01:00:41, 2022-03-29 01:01:41, 2
<== Total: 2
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@3c35c345]
MybatisPlusUser(id=1646546496498463, name=李一, age=29, email=567468955@qq.com, createTime=Sun Apr 03 17:17:26 CST 2022, updateTime=Sun Apr 03 17:17:29 CST 2022, version=1)
MybatisPlusUser(id=1508489260037705729, name=张三, age=30, email=1ddgds97@qq.com, createTime=Tue Mar 29 01:00:41 CST 2022, updateTime=Tue Mar 29 01:01:41 CST 2022, version=2)
3、结果如下
注意点
如果没有在配置类中,进行分页插件的配置以及指定数据库类型,那么无法实现分页效果。只会查询出所有的记录,而不进行分页。