写个文章仅仅为了记笔记——————
目录
MyBatisPlus自带分页插件,只需简单的配置就可以实现分页功能
一.实现一个简单的分页测试功能
(一)添加配置类
最好在项目src内新创建一个config配置类文件夹,创建配置类MyBatisPlusConfig
1.添加配置类注解@Configuration。
2.需要扫描mapper接口所在的包(主类中的注解移过来)例:
@MapperScan("nuc.guigu.zwj.mybatisplus.mapper")
3.配置分页插件(需要注解@Bean)
配置类代码:
@Configuration
@MapperScan("nuc.guigu.zwj.mybatisplus.mapper")
public class MyBatisPlusConfig {
//配置分页插件
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor(){
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
//数据库类型是MySql,因此参数填写DbType.MYSQL
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}
(二)接下来创建一个测试类MyBatisPlusTest
1.测试类记得添加注解@SpringBootTest
2.对使用的mapper组件进行自动装配,添加注解@Autowired
@Autowired
UserMapper userMapper;
3.测试方法里
userMapper方法里有一个selectPage(),这个方法参数有两个,第一个是Page类型的(分页对象),第二个是Wapper类型的,因此我们创建这两个对象。
Page类的泛型为我们操作的实体类对象,参数为当前页的页码(current),个每页显示的条数(size),语句为
Page<User> page = new Page<>(2,3);
第二个参数Wapper类型为条件构造器的条件,因为这里查询的是所有数据(即没有条件),所以Wapper类型的数据填null。
输出page对象,执行可以看到输出的是page的内存地址
那么之后就可以访问page对象的各个数据。
4.测试类代码
@SpringBootTest
public class MyBatisPlusPluginsTest {
@Autowired
UserMapper userMapper;
@Test
public void test01(){
Page<User> page = new Page<>(2,3);
userMapper.selectPage(page,null);
System.out.println(page);
}
}
(三)一些page对象封装的数据测试
System.out.println(page.getRecords());//获取分页记录
System.out.println(page.getPages());//总页数
System.out.println(page.getTotal());//总记录数
System.out.println(page.hasNext());//是否有下一页
System.out.println(page.hasPrevious());//是否有上一页
二. 自定义分页功能
加入需要查询以用户年龄为条件输出用户信息数据并分页时
自定义的page方法返回值必须是page
(一)创建接口
在接口类Mapper类里创建方法SelectPageByAge(),类型仍然为Page,泛型为实体类User,参数第一个为Page<User> page,第二个为年龄Integer age。这里有两个参数,我们设置参数的访问规则可以使用@Param。
Page<User> selectPageByUser(@Param("page") Page<User> page, @Param("age") Integer age);
(二)添加配置文件
配置类型别名所对应的包,在yml中添加配置
mybatis-plus:
#配置类型别名所对应的包
type-aliases-package: nuc.guigu.zwj.mybatisplus.pojo
这个时候就可以使用类型别名了,这个包下的所有的类型都可以使用所对应的默认的别名,即resultType可以直接等于“User”,而不用写user的相对路径。
在xml文件中添加SelectPageByAge方法的映射
<select id="selectPageByAge" resultType="User">
select uid,user_name,age,email
from t_user where age > = #{age};
</select>
(三)创建测试方法
前面的都一样,改变的是自定义page方法的第二个参数,将其改为了Integer类型的年龄age
@Test
public void testPageByAge(){
Page<User> page = new Page<>(1,3);
userMapper.selectPageByAge(page,20);
System.out.println(page.getRecords());//获取分页记录
System.out.println(page.getPages());//总页数
System.out.println(page.getTotal());//总记录数
System.out.println(page.hasNext());//是否有下一页
System.out.println(page.hasPrevious());//是否有上一页
}
测试完成