欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot實(shí)現(xiàn)聯(lián)表查詢的代碼詳解

 更新時(shí)間:2024年05月19日 16:59:02   作者:小小-菠蘿  
這篇文章主要介紹了SpringBoot中如何實(shí)現(xiàn)聯(lián)表查詢,文中通過代碼示例和圖文結(jié)合的方式講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下

1、要求

現(xiàn)在我們有這樣一張user表、xue_yuan表和ban_ji表

我們希望可以查詢到所有的用戶:要求顯示出學(xué)院名稱、老師名稱以及班級(jí)名稱而不是其id。但是若只查詢user表無法滿足我們的要求,因此需要聯(lián)表查詢;同時(shí)要求實(shí)現(xiàn)分頁和模糊查詢

2、解決辦法

2.1 SQL語句:可以直接創(chuàng)建一個(gè)新的SQL語句來實(shí)現(xiàn)

LEFT JOIN(左連接)   RIGHT JOIN(右連接) INNER JOIN(內(nèi)連接)

Left join:即左連接,是以左表為基礎(chǔ),根據(jù)ON后給出的兩表的條件將兩表連接起來。結(jié)果會(huì)將左表所有的查詢信息列出,而右表只列出ON后條件與左表滿足的部分。左連接全稱為左外連接,是外連接的一種。

?Right join:即右連接,是以右表為基礎(chǔ),根據(jù)ON后給出的兩表的條件將兩表連接起來。結(jié)果會(huì)將右表所有的查詢信息列出,而左表只列出ON后條件與右表滿足的部分。右連接全稱為右外連接,是外連接的一種。

Inner join:即內(nèi)連接,同時(shí)將兩表作為參考對(duì)象,根據(jù)ON后給出的兩表的條件將兩表連接起來。結(jié)果則是兩表同時(shí)滿足ON后的條件的部分才會(huì)列出。

SELECT a.username,b.id FROM USER AS a LEFT JOIN ban_ji AS b ON a.ban_ji_id=b.id

2.2 IPage對(duì)象中的屬性

1、首先在user的實(shí)體類中本來是沒有banJiName、xueYuanName、teacherName屬性的,但是我們有希望可以進(jìn)行展示,所以要用到一個(gè)注解

@TableFile

可以用來進(jìn)行映射關(guān)系

也可以用來添加一個(gè)數(shù)據(jù)庫表中不存在的字段

這里我們需要用到第二個(gè)屬性,在user實(shí)體類中進(jìn)行添加

 // 非數(shù)據(jù)庫列 班級(jí)名字
@TableFile(exist=fale)
private String banJiName;
// 非數(shù)據(jù)庫列 學(xué)院名字
@TableField(exist = false)
private String xueYuanName;
// 非數(shù)據(jù)庫列 老師名字
@TableField(exist = false)
private String teacherName;

2、進(jìn)行分頁和模糊查詢,我們這里將會(huì)得到一個(gè)IPage對(duì)象,通過其中的gerRecords()方可以得到所有的User對(duì)象

在這里我們可以獲得ban_ji_id,xue_yuan_id_teacher_id,我們可以創(chuàng)建banJiService,xueYuanService,teacherService通過這些屬性,我們可以直接在service對(duì)象中獲取其對(duì)應(yīng)的名稱

IPage<User> page=new Page<userVo.getPage(),userVo.getLimit()>
 
//創(chuàng)建條件構(gòu)造器
QueryWrapper<User> queryWrapper=new QueryWrapper<>();
//進(jìn)行模糊查詢 :根據(jù)用戶名和手機(jī)號(hào)查詢    queryWrapper.like(StringUtils.isNotEmpty(userVo.getUsername()),"username",userVo.getUsername());
queryWrapper.like(StringUtils.isNotEmpty(userVo.getPhone()),"phone",userVo.getPhone());
//進(jìn)行查詢
userService.page(page,queryWrapper);
//此時(shí)在IPage對(duì)象page中已經(jīng)有了所有的數(shù)據(jù) page.getRecords()
 
 
for(User user :page.getRecords())
{
   //判斷ban_ji_name
   if(user.getBanJiId()!=null)
   {
      BanJi banji=banJiService.getById(user.getBanJiId);
      user.setBanJiName(banji.getName());
   }
   //為學(xué)院名稱賦值
   if(user.getXueYuanId()!=null)
   {
      XueYuan xueyuan = xueYuanService.getById(user.getXueYuanId());
      user.setXueYuanName(xueyuan.getName());
            }
   //為老師名稱賦值
   if(user.getTeacherId()!=null)
   {
      User teacher = userService.getById(user.getTeacherId());
      user.setTeacherName(teacher.getUsername());
    }
}

這里的DataView是我床架你的一個(gè)返回結(jié)果類

以上就是SpringBoot實(shí)現(xiàn)聯(lián)表查詢的代碼詳解的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot聯(lián)表查詢的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • springboot查看和修改內(nèi)置tomcat版本的方法步驟

    springboot查看和修改內(nèi)置tomcat版本的方法步驟

    本文主要介紹了springboot查看和修改內(nèi)置tomcat版本的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07
  • Java 給PPT添加動(dòng)畫效果的示例

    Java 給PPT添加動(dòng)畫效果的示例

    這篇文章主要介紹了Java 給PPT添加動(dòng)畫效果的示例,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下
    2021-04-04
  • Java中的@Repeatable注解使用詳解

    Java中的@Repeatable注解使用詳解

    這篇文章主要介紹了Java中的@Repeatable注解使用詳解,@Repeatable注解是java8為了解決同一個(gè)注解不能重復(fù)在同一類/方法/屬性上使用的問題,本文提供了解決思路和部分實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2024-02-02
  • 學(xué)習(xí)Java的static與final關(guān)鍵字

    學(xué)習(xí)Java的static與final關(guān)鍵字

    本篇文章給大家詳細(xì)分析了Java的static與final關(guān)鍵字知識(shí)點(diǎn)以及相關(guān)代碼分享,有需要的讀者跟著學(xué)習(xí)下吧。
    2018-03-03
  • jar包打包成exe安裝包的實(shí)現(xiàn)

    jar包打包成exe安裝包的實(shí)現(xiàn)

    本文主要介紹了jar包打包成exe安裝包的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • ElasticSearch?深度分頁示例解析

    ElasticSearch?深度分頁示例解析

    這篇文章主要為大家介紹了ElasticSearch?深度分頁示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • SpringBoot自定義注解使用讀寫分離Mysql數(shù)據(jù)庫的實(shí)例教程

    SpringBoot自定義注解使用讀寫分離Mysql數(shù)據(jù)庫的實(shí)例教程

    這篇文章主要給大家介紹了關(guān)于SpringBoot自定義注解使用讀寫分離Mysql數(shù)據(jù)庫的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 多模塊maven的deploy集成gitlab?ci自動(dòng)發(fā)版配置

    多模塊maven的deploy集成gitlab?ci自動(dòng)發(fā)版配置

    這篇文章主要為大家介紹了多模塊maven項(xiàng)目deploy集成gitlab?ci自動(dòng)發(fā)版的配置流程步驟,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2022-02-02
  • spring定義和裝配bean詳解

    spring定義和裝配bean詳解

    這篇文章主要介紹了spring定義和裝配bean詳解,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-12-12
  • Java中快速排序優(yōu)化技巧之隨機(jī)取樣、三數(shù)取中和插入排序

    Java中快速排序優(yōu)化技巧之隨機(jī)取樣、三數(shù)取中和插入排序

    快速排序是一種常用的基于比較的排序算法,下面這篇文章主要給大家介紹了關(guān)于Java中快速排序優(yōu)化技巧之隨機(jī)取樣、三數(shù)取中和插入排序的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-09-09

最新評(píng)論