查询专栏:myabtis 实现的分页为什么还要分页插件?
文章目录
- 1. 创建分页插件
- 2. 测试分页
- 3. 自定义分页
- 4. 测试自定义分页方法
- 5. 控制台输出
- 6. 多表操作
1. 创建分页插件
@Configuration
public class MybatisPlusConfig {@Beanpublic PaginationInterceptor paginationInterceptor() {return new PaginationInterceptor();}
}
2. 测试分页
/*** myabtis 实现的分页为什么还要分页插件?* <p>* 1.mybatis实现得分页时逻辑分页或者叫做内存不是物理分页* 2.他是把符合条件的数据全部查询出来放到内存中,然后返回你需要的那部分* 3.表中数据不多时,可以使用,速度慢一些;当数据量大时,建议使用物理分页*/@Testpublic void selectPage() {QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.ge("age", 26);//总页数+总记录数
// Page<User> page = new Page<>(1, 2);// 不返回总记录数 设置falsePage<User> page = new Page<>(1, 2, false);//第一种
// IPage<User> iPage = userMapper.selectPage(page, queryWrapper);
// System.out.println("总页数:"+iPage.getPages());
// System.out.println("总记录数:"+iPage.getTotal());//第二种IPage<Map<String, Object>> iPage = userMapper.selectMapsPage(page, queryWrapper);System.out.println("总页数:" + iPage.getPages());System.out.println("总记录数:" + iPage.getTotal());List<Map<String, Object>> userList = iPage.getRecords();userList.forEach(System.out::println);}
3. 自定义分页
- 在mapper接口中,添加自定义分页接口
/*** 查询所有 有条件会自动拼接在where 后边当条件 单表操作** @param page* @param wrapper* @return*///自定义sql 分页IPage<User> selectUserPage(Page<User> page, @Param(Constants.WRAPPER) Wrapper<User> wrapper);
- 在xml文件中书写sql
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mybatisplus.sampleschapter1.dao.UserMapper"><select id="selectUserPage" resultType="com.example.mybatisplus.sampleschapter1.entity.User">select * from user ${ew.customSqlSegment}</select></mapper>
4. 测试自定义分页方法
@Testpublic void selectMyPage() {QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.ge("age", 26);//总页数+总记录数Page<User> page = new Page<>(1, 2);//调用自定义sqlIPage<User> iPage = userMapper.selectUserPage(page, queryWrapper);System.out.println("总页数:" + iPage.getPages());System.out.println("总记录数:" + iPage.getTotal());List<User> userList = iPage.getRecords();userList.forEach(System.out::println);}
5. 控制台输出
6. 多表操作
/*** 多表操作* 1.在xml文件中书写sql语句* 2.在mapper接口中,定义接口* 3.客户端调用即可*/
想学习更多微服务、分布式、中间件、数据库、项目快速构建等系列技术
请访问http://gblfy.com
让我们一起进步!!!