當(dāng)前位置:
首頁(yè) >
mybatis plus实现多表分页条件查询
發(fā)布時(shí)間:2024/9/27
25
豆豆
生活随笔
收集整理的這篇文章主要介紹了
mybatis plus实现多表分页条件查询
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
文章目錄
- 前言
- 一、
- 二、如何實(shí)現(xiàn)
- 1 配置mybatis plus分頁(yè)插件
- 2.準(zhǔn)備三張表
- 2.1 學(xué)生表
- 2.2 老師表
- 2.3 老師和學(xué)生Vo表
- 3. 編寫(xiě)SQL語(yǔ)句
- 4. 編寫(xiě)mapper層
- 5. service層
- 6.controller層
- 演示效果
- 【補(bǔ)充】 XML 自定義分頁(yè)
- 總結(jié)
前言
沒(méi)啥可說(shuō)的
一、
沒(méi)啥可說(shuō)的
二、如何實(shí)現(xiàn)
1 配置mybatis plus分頁(yè)插件
@Configuration @MapperScan("com.breez.vote.mapper") public class MybatispluConfig {/*** 配置分頁(yè)插件*/@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));return interceptor;} }2.準(zhǔn)備三張表
2.1 學(xué)生表
@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 老師和學(xué)生Vo表
💡這張表的數(shù)據(jù)來(lái)自老師和學(xué)生,用來(lái)保存來(lái)自多張表的數(shù)據(jù)。
/*** 學(xué)生和老師*/ @Data public class QueryVo implements Serializable {/*** 學(xué)生名字*/private String studentName;/*** 學(xué)生年齡*/private Integer studentAge;/*** 老師姓名*/private String teacherName;/*** 老師年齡*/private Integer teacherAge; }3. 編寫(xiě)SQL語(yǔ)句
💡這里需要注意:寫(xiě)完SQL語(yǔ)句后,需要在結(jié)尾加上${ew.customSqlSegment},查詢參數(shù),由mybatis plus自動(dòng)拼裝。
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.breez.vote.mapper.StudentMapper"><select id="findByPage" resultType="com.breez.vote.domain.vo.QueryVo">select * from student,teacher ${ew.customSqlSegment}</select></mapper>4. 編寫(xiě)mapper層
public interface StudentMapper extends BaseMapper<Student> {/***自定義分頁(yè)條件查詢* @param page 分頁(yè)參數(shù)* @param wrapper 查詢參數(shù)* @return*/IPage<QueryVo> findByPage(IPage<QueryVo> page, @Param(Constants.WRAPPER) QueryWrapper<QueryVo> wrapper); }5. service層
public interface StudentService extends IService<Student> {/**** @param page 分頁(yè)參數(shù)* @param queryWrapper 查詢條件* @return 分頁(yè)后的數(shù)據(jù)*/public IPage<QueryVo> findByPage(Page<QueryVo> page, QueryWrapper<QueryVo> queryWrapper);} @Service public class StudentServiceImpl extends ServiceImpl<StudentMapper, Student> implements StudentService {@Resourceprivate StudentMapper queryMapper;/*** @param page 分頁(yè)參數(shù)* @param queryWrapper 查詢條件* @return 分頁(yè)后的數(shù)據(jù)*/@Overridepublic IPage<QueryVo> findByPage(Page<QueryVo> page, QueryWrapper<QueryVo> queryWrapper) {return queryMapper.findByPage(page, queryWrapper);} }6.controller層
@RestController @RequestMapping("data") public class StudentController {@Autowiredprivate StudentService studentService;@GetMapping("query")public Object query() {Page<QueryVo> page = new Page<>(1, 2);IPage<QueryVo> queryVoPage = studentService.findByPage(page, new QueryWrapper<>());return queryVoPage;} }演示效果
??學(xué)生表【4條數(shù)據(jù)】
?? 老師表【3條數(shù)據(jù)】
💡這里出現(xiàn)這個(gè)結(jié)果原因(出現(xiàn)了12條數(shù)據(jù)【3*4=12】)是我沒(méi)有在SQL語(yǔ)句中寫(xiě)多表查詢條件,出現(xiàn)了笛卡爾積,加上多表查詢條件后就不會(huì)出現(xiàn)相同的了(李剛)。
【補(bǔ)充】 XML 自定義分頁(yè)
- UserMapper.java 方法內(nèi)容
- UserMapper.xml 等同于編寫(xiě)一個(gè)普通 list 查詢,mybatis-plus 自動(dòng)替你分頁(yè)
- UserServiceImpl.java 調(diào)用分頁(yè)方法
總結(jié)
📖
一個(gè)字: 巴適
總結(jié)
以上是生活随笔為你收集整理的mybatis plus实现多表分页条件查询的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: JavaScript-获得和设置表单的值
- 下一篇: 【算法】旋转数组【LeetCode】