SpringBoot實現聯表查詢的代碼詳解
1、要求
現在我們有這樣一張user表、xue_yuan表和ban_ji表



我們希望可以查詢到所有的用戶:要求顯示出學院名稱、老師名稱以及班級名稱而不是其id。但是若只查詢user表無法滿足我們的要求,因此需要聯表查詢;同時要求實現分頁和模糊查詢
2、解決辦法
2.1 SQL語句:可以直接創(chuàng)建一個新的SQL語句來實現
LEFT JOIN(左連接) RIGHT JOIN(右連接) INNER JOIN(內連接)
Left join:即左連接,是以左表為基礎,根據ON后給出的兩表的條件將兩表連接起來。結果會將左表所有的查詢信息列出,而右表只列出ON后條件與左表滿足的部分。左連接全稱為左外連接,是外連接的一種。
?Right join:即右連接,是以右表為基礎,根據ON后給出的兩表的條件將兩表連接起來。結果會將右表所有的查詢信息列出,而左表只列出ON后條件與右表滿足的部分。右連接全稱為右外連接,是外連接的一種。
Inner join:即內連接,同時將兩表作為參考對象,根據ON后給出的兩表的條件將兩表連接起來。結果則是兩表同時滿足ON后的條件的部分才會列出。
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對象中的屬性
1、首先在user的實體類中本來是沒有banJiName、xueYuanName、teacherName屬性的,但是我們有希望可以進行展示,所以要用到一個注解
@TableFile
可以用來進行映射關系

也可以用來添加一個數據庫表中不存在的字段

這里我們需要用到第二個屬性,在user實體類中進行添加
// 非數據庫列 班級名字 @TableFile(exist=fale) private String banJiName; // 非數據庫列 學院名字 @TableField(exist = false) private String xueYuanName; // 非數據庫列 老師名字 @TableField(exist = false) private String teacherName;
2、進行分頁和模糊查詢,我們這里將會得到一個IPage對象,通過其中的gerRecords()方可以得到所有的User對象
在這里我們可以獲得ban_ji_id,xue_yuan_id_teacher_id,我們可以創(chuàng)建banJiService,xueYuanService,teacherService通過這些屬性,我們可以直接在service對象中獲取其對應的名稱
IPage<User> page=new Page<userVo.getPage(),userVo.getLimit()>
//創(chuàng)建條件構造器
QueryWrapper<User> queryWrapper=new QueryWrapper<>();
//進行模糊查詢 :根據用戶名和手機號查詢 queryWrapper.like(StringUtils.isNotEmpty(userVo.getUsername()),"username",userVo.getUsername());
queryWrapper.like(StringUtils.isNotEmpty(userVo.getPhone()),"phone",userVo.getPhone());
//進行查詢
userService.page(page,queryWrapper);
//此時在IPage對象page中已經有了所有的數據 page.getRecords()
for(User user :page.getRecords())
{
//判斷ban_ji_name
if(user.getBanJiId()!=null)
{
BanJi banji=banJiService.getById(user.getBanJiId);
user.setBanJiName(banji.getName());
}
//為學院名稱賦值
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是我床架你的一個返回結果類

以上就是SpringBoot實現聯表查詢的代碼詳解的詳細內容,更多關于SpringBoot聯表查詢的資料請關注腳本之家其它相關文章!

