- 前言
- 一、
- 二、如何实现
- 1 配置mybatis plus分页插件
- 2.准备三张表
- 2.1 学生表
- 2.2 老师表
- 2.3 老师和学生Vo表
- 3. 编写SQL语句
- 4. 编写mapper层
- 5. service层
- 6.controller层
- 演示效果
- 【补充】 XML 自定义分页
- 总结
前言
一、没啥可说的
二、如何实现 1 配置mybatis plus分页插件没啥可说的
@Configuration
@MapperScan("com.breez.vote.mapper")
public class MybatispluConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}
2.准备三张表
2.1 学生表
@Data
@TableName("student")
public class Student implements Serializable {
private Integer id;
private String studentName;
private Integer studentAge;
}
2.2 老师表
@Data
@TableName("teacher")
public class Teacher implements Serializable {
private Integer id;
private String teacherName;
private Integer teacherAge;
}
2.3 老师和学生Vo表
这张表的数据来自老师和学生,用来保存来自多张表的数据。
@Data
public class QueryVo implements Serializable {
private String studentName;
private Integer studentAge;
private String teacherName;
private Integer teacherAge;
}
3. 编写SQL语句
这里需要注意:写完SQL语句后,需要在结尾加上${ew.customSqlSegment},查询参数,由mybatis plus自动拼装。
select * from student,teacher ${ew.customSqlSegment}
4. 编写mapper层
public interface StudentMapper extends baseMapper5. service层{ IPage findByPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper wrapper); }
public interface StudentService extends IService{ public IPage findByPage(Page page, QueryWrapper queryWrapper); }
@Service public class StudentServiceImpl extends ServiceImpl6.controller层implements StudentService { @Resource private StudentMapper queryMapper; @Override public IPage findByPage(Page page, QueryWrapper queryWrapper) { return queryMapper.findByPage(page, queryWrapper); } }
@RestController
@RequestMapping("data")
public class StudentController {
@Autowired
private StudentService studentService;
@GetMapping("query")
public Object query() {
Page page = new Page<>(1, 2);
IPage queryVoPage = studentService.findByPage(page, new QueryWrapper<>());
return queryVoPage;
}
}
演示效果
✏️学生表【4条数据】
✏️ 老师表【3条数据】
【补充】 XML 自定义分页这里出现这个结果原因(出现了12条数据【3*4=12】)是我没有在SQL语句中写多表查询条件,出现了笛卡尔积,加上多表查询条件后就不会出现相同的了(李刚)。
- UserMapper.java 方法内容
public interface UserMapper {//可以继承或者不继承baseMapper
IPage selectPageVo(Page> page, Integer state);
}
- UserMapper.xml 等同于编写一个普通 list 查询,mybatis-plus 自动替你分页
- UserServiceImpl.java 调用分页方法
public IPage总结selectUserPage(Page page, Integer state) { // 不进行 count sql 优化,解决 MP 无法自动优化 SQL 问题,这时候你需要自己查询 count 部分 // page.setOptimizeCountSql(false); // 当 total 为小于 0 或者设置 setSearchCount(false) 分页插件不会进行 count 查询 // 要点!! 分页返回的对象与传入的对象是同一个 return userMapper.selectPageVo(page, state); }
一个字: 巴适



