Mybatis-Plus多表關(guān)聯(lián)查詢的使用案例解析
項(xiàng)目的目錄結(jié)構(gòu):
有以下四個(gè)包:
1、 controller控制層
2、dao層, 項(xiàng)目的目錄結(jié)構(gòu): 有以下四個(gè)包:
1、 controller控制層
2、dao層,接口
3、pojo,shiulilei
4、service服務(wù)層
有表結(jié)構(gòu)如下:
部門(mén)表:dept
員工表:emp
假設(shè)要查詢每個(gè)員工所屬的部門(mén)(或位置等信息),就需要將兩張表連接起來(lái),使用SQL語(yǔ)句很簡(jiǎn)單(select * from emp,dept where emp.deptno=dept.deptno),但是在Java程序中怎么寫(xiě)就比較復(fù)雜了。
首先配置pom.xml配置文件
1.pojo包中有dept和emp兩個(gè)實(shí)例類
1)dept
@Data @EqualsAndHashCode(callSuper = false) @TableName("dept") public class Dept implements Serializable { private static final long serialVersionUID = 1L; @TableId private Integer deptno; private String dname; private String loc; }
2)emp
@Data @EqualsAndHashCode(callSuper = false) @TableName("emp") public class Emp implements Serializable { private static final long serialVersionUID = 1L; @TableId("empno") private Integer empno; private String ename; private String job; private Integer mgr; private LocalDateTime hiredate; private BigDecimal sal; private BigDecimal comm; private Integer deptno; private Dept dept;//多表關(guān)聯(lián)需要查詢的數(shù)據(jù) }
在Emp類中多了一個(gè)Dept對(duì)象,這個(gè)對(duì)象包含了每個(gè)員工對(duì)應(yīng)部門(mén)的信息。
2.在Emp的mapper映射文件(.xml)中的mapper之間添加如下代碼
<mapper namespace="com.nb.spring_boot.api.dao.IEmpDao"> <resultMap id="empMapper" type="com.nb.spring_boot.api.pojo.Emp"> <association property="dept" column="deptno" select="com.nb.spring_boot.api.dao.IDeptDao.selectById"/> </resultMap> <select id="queryEmps" resultMap="empMapper"> select * from emp </select> </mapper>
resultMap里的id屬性(empMapper)里面可以隨便寫(xiě)一個(gè)變量名,可以不叫empMapper,select里的selectById在IDeptDao接口中要有該方法
Dept selectById(Integer deptno);
3.在Dept的mapper映射文件(.xml)中的mapper之間添加如下代碼
<select id="selectById" resultType="com.nb.spring_boot.api.pojo.Dept"> select * from dept where deptno=#{deptno} </select>
4.在IDeptDao接口中代碼如下
public interface IDeptDao extends BaseMapper<Dept> { Dept selectById(Integer deptno); }
5.Emp的dao接口中和
public interface IEmpDao extends BaseMapper<Emp> { IPage<Emp> queryEmps(IPage<Emp> page,@Param(Constants.WRAPPER) Wrapper<Emp> wrapper); }
6.IEmpService接口中
public interface IEmpService extends IService<Emp> { IPage<Emp> queryEmps(IPage<Emp> result, QueryWrapper<Emp> wrapper); }
7.EmpserviceIml類中
public class EmpServiceImpl extends ServiceImpl<IEmpDao, Emp> implements IEmpService { @Autowired IEmpDao empDao;//這里報(bào)紅沒(méi)事 @Override public IPage<Emp> queryEmps(IPage<Emp> result, QueryWrapper<Emp> wrapper) { result = empDao.queryEmps(result, wrapper); return result; } }
8.接下來(lái)就是你自己在controller層寫(xiě)方法
示例:
@RequestMapping("qemps") IPage<Emp> queryEmps(@RequestParam(defaultValue = "1") int page, @RequestParam(defaultValue = "5") int limit){ IPage<Emp> result = new Page<>(page, limit); QueryWrapper<Emp> wrapper = new QueryWrapper<>(); wrapper.gt("sal", 1000);//查詢條件,工資大于1000,其他的可以研究一下,比如eq,le,like return empService.queryEmps(result, wrapper); }
以上就是多表關(guān)聯(lián)查詢了~~~
到此這篇關(guān)于Mybatis-Plus多表關(guān)聯(lián)查詢的使用案例解析的文章就介紹到這了,更多相關(guān)Mybatis-Plus多表關(guān)聯(lián)查詢內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- MyBatis多表查詢和注解開(kāi)發(fā)案例詳解
- mybatis-plus多表分頁(yè)查詢最佳實(shí)現(xiàn)方法(非常簡(jiǎn)單)
- Mybatis-plus實(shí)現(xiàn)join連表查詢的示例代碼
- MyBatis中ResultMap與多表查詢的處理方法
- MybatisPlus多表連接查詢的具體實(shí)現(xiàn)
- mybatis于xml方式和注解方式實(shí)現(xiàn)多表查詢的操作方法
- mybatis-plus多表查詢操作方法
- MyBatis?實(shí)現(xiàn)動(dòng)態(tài)排序的多表查詢
- 深入解析MybatisPlus多表連接查詢
- Mybatis分頁(yè)查詢主從表的實(shí)現(xiàn)示例
- mybatis連接數(shù)據(jù)庫(kù)實(shí)現(xiàn)雙表查詢
相關(guān)文章
Java中十進(jìn)制和十六進(jìn)制的相互轉(zhuǎn)換方法
下面小編就為大家?guī)?lái)一篇Java中十進(jìn)制和十六進(jìn)制的相互轉(zhuǎn)換方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-08-08JProfiler11使用教程之JVM調(diào)優(yōu)問(wèn)題小結(jié)
這篇文章主要介紹了JProfiler11使用教程之JVM調(diào)優(yōu),本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03Java?OpenCV圖像處理之SIFT角點(diǎn)檢測(cè)詳解
SIFT,即尺度不變特征變換,是用于圖像處理領(lǐng)域的一種描述。這種描述具有尺度不變性,可在圖像中檢測(cè)出關(guān)鍵點(diǎn),是一種局部特征描述子。本文將詳細(xì)介紹一下Java?OpenCV圖像處理中的SIFT角點(diǎn)檢測(cè),需要的可以參考一下2022-02-02jenkins配置詳細(xì)指南(附j(luò)dk多個(gè)版本配置)
Jenkins是一款CICD(持續(xù)集成與持續(xù)交付)工具,Jenkins可以幫你在寫(xiě)完代碼后,一鍵完成開(kāi)發(fā)過(guò)程中的一系列自動(dòng)化部署的工作,這篇文章主要給大家介紹了關(guān)于jenkins配置的相關(guān)資料,文中還附j(luò)dk多個(gè)版本配置指南,需要的朋友可以參考下2024-02-02Java實(shí)現(xiàn)根據(jù)sql動(dòng)態(tài)查詢并下載數(shù)據(jù)到excel
這篇文章主要為大家詳細(xì)介紹了如何使用Java實(shí)現(xiàn)根據(jù)sql動(dòng)態(tài)查詢并下載數(shù)據(jù)到excel的功能,文中的示例代碼講解詳細(xì),有需要的可以參考下2024-04-04談?wù)凧ava中對(duì)象,類和this,super,static關(guān)鍵字的使用
對(duì)象:對(duì)象是類的一個(gè)實(shí)例,有狀態(tài)和行為。類:類是一個(gè)模板,它描述一類對(duì)象的行為和狀態(tài)。本文就來(lái)和大家聊聊Java中對(duì)象,類和關(guān)鍵字的使用,需要的可以參考一下2022-08-08SpringBoot Security前后端分離登錄驗(yàn)證的實(shí)現(xiàn)
這篇文章主要介紹了SpringBoot Security前后端分離登錄驗(yàn)證的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09