Mybatis-Plus多表關(guān)聯(lián)查詢的使用案例解析
項目的目錄結(jié)構(gòu):
有以下四個包:
1、 controller控制層
2、dao層, 項目的目錄結(jié)構(gòu): 有以下四個包:

1、 controller控制層
2、dao層,接口
3、pojo,shiulilei
4、service服務(wù)層
有表結(jié)構(gòu)如下:
部門表:dept
![]()
員工表:emp
![]()
假設(shè)要查詢每個員工所屬的部門(或位置等信息),就需要將兩張表連接起來,使用SQL語句很簡單(select * from emp,dept where emp.deptno=dept.deptno),但是在Java程序中怎么寫就比較復(fù)雜了。
首先配置pom.xml配置文件
1.pojo包中有dept和emp兩個實例類
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類中多了一個Dept對象,這個對象包含了每個員工對應(yīng)部門的信息。
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)里面可以隨便寫一個變量名,可以不叫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;//這里報紅沒事
@Override
public IPage<Emp> queryEmps(IPage<Emp> result, QueryWrapper<Emp> wrapper) {
result = empDao.queryEmps(result, wrapper);
return result;
}
}8.接下來就是你自己在controller層寫方法
示例:
@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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 關(guān)于QueryWrapper,實現(xiàn)MybatisPlus多表關(guān)聯(lián)查詢方式
- Mybatis多表關(guān)聯(lián)查詢的實現(xiàn)(DEMO)
- Mybatis 一對多和多對一關(guān)聯(lián)查詢問題
- mybatis-plus多表關(guān)聯(lián)查詢功能的實現(xiàn)
- mybatis如何使用注解實現(xiàn)一對多關(guān)聯(lián)查詢
- MyBatis實踐之動態(tài)SQL及關(guān)聯(lián)查詢
- MyBatis 三表外關(guān)聯(lián)查詢的實現(xiàn)(用戶、角色、權(quán)限)
- Mybatis關(guān)聯(lián)查詢之一對多和多對一XML配置詳解
- Mybatis實現(xiàn)一對一、一對多關(guān)聯(lián)查詢的方法(示例詳解)
- MyBatis的關(guān)聯(lián)查詢實現(xiàn)(一對一、一對多、多對多)
相關(guān)文章
Java啟動參數(shù)從基礎(chǔ)配置到高級調(diào)優(yōu)(最新整理)
文章系統(tǒng)講解Java啟動參數(shù)分類、內(nèi)存管理配置、GC調(diào)優(yōu)策略及生產(chǎn)環(huán)境實踐,重點涵蓋標準/非標準參數(shù)、堆/元空間/直接內(nèi)存設(shè)置、G1/Parallel等回收器選擇,并提供壓縮指針、容器化部署等優(yōu)化建議,感興趣的朋友跟隨小編一起看看吧2025-08-08
Java中基于Shiro,JWT實現(xiàn)微信小程序登錄完整例子及實現(xiàn)過程
這篇文章主要介紹了Java中基于Shiro,JWT實現(xiàn)微信小程序登錄完整例子 ,實現(xiàn)了小程序的自定義登陸,將自定義登陸態(tài)token返回給小程序作為登陸憑證。需要的朋友可以參考下2018-11-11
Java 快速排序(QuickSort)原理及實現(xiàn)代碼
這篇文章主要介紹了Java 快速排序(QuickSort)原理及實現(xiàn)代碼,有需要的朋友可以參考一下2014-01-01

