日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(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)容
public interface UserMapper {//可以繼承或者不繼承BaseMapper/*** <p>* 查詢 : 根據(jù)state狀態(tài)查詢用戶列表,分頁(yè)顯示* </p>** @param page 分頁(yè)對(duì)象,xml中可以從里面進(jìn)行取值,傳遞參數(shù) Page 即自動(dòng)分頁(yè),必須放在第一位(你可以繼承Page實(shí)現(xiàn)自己的分頁(yè)對(duì)象)* @param state 狀態(tài)* @return 分頁(yè)對(duì)象*/IPage<User> selectPageVo(Page<?> page, Integer state); }
  • UserMapper.xml 等同于編寫(xiě)一個(gè)普通 list 查詢,mybatis-plus 自動(dòng)替你分頁(yè)
<select id="selectPageVo" resultType="com.baomidou.cloud.entity.UserVo">SELECT id,name FROM user WHERE state=#{state} </select>
  • UserServiceImpl.java 調(diào)用分頁(yè)方法
public IPage<User> selectUserPage(Page<User> page, Integer state) {// 不進(jìn)行 count sql 優(yōu)化,解決 MP 無(wú)法自動(dòng)優(yōu)化 SQL 問(wèn)題,這時(shí)候你需要自己查詢 count 部分// page.setOptimizeCountSql(false);// 當(dāng) total 為小于 0 或者設(shè)置 setSearchCount(false) 分頁(yè)插件不會(huì)進(jìn)行 count 查詢// 要點(diǎn)!! 分頁(yè)返回的對(duì)象與傳入的對(duì)象是同一個(gè)return userMapper.selectPageVo(page, state); }

總結(jié)

📖
一個(gè)字: 巴適

總結(jié)

以上是生活随笔為你收集整理的mybatis plus实现多表分页条件查询的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。