Mybatis-Plus多表關聯(lián)查詢的使用案例解析
項目的目錄結構:
有以下四個包:
1、 controller控制層
2、dao層, 項目的目錄結構: 有以下四個包:
1、 controller控制層
2、dao層,接口
3、pojo,shiulilei
4、service服務層
有表結構如下:
部門表:dept
員工表:emp
假設要查詢每個員工所屬的部門(或位置等信息),就需要將兩張表連接起來,使用SQL語句很簡單(select * from emp,dept where emp.deptno=dept.deptno),但是在Java程序中怎么寫就比較復雜了。
首先配置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;//多表關聯(lián)需要查詢的數(shù)據(jù) }
在Emp類中多了一個Dept對象,這個對象包含了每個員工對應部門的信息。
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); }
以上就是多表關聯(lián)查詢了~~~
到此這篇關于Mybatis-Plus多表關聯(lián)查詢的使用案例解析的文章就介紹到這了,更多相關Mybatis-Plus多表關聯(lián)查詢內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
- MyBatis多表查詢和注解開發(fā)案例詳解
- mybatis-plus多表分頁查詢最佳實現(xiàn)方法(非常簡單)
- Mybatis-plus實現(xiàn)join連表查詢的示例代碼
- MyBatis中ResultMap與多表查詢的處理方法
- MybatisPlus多表連接查詢的具體實現(xiàn)
- mybatis于xml方式和注解方式實現(xiàn)多表查詢的操作方法
- mybatis-plus多表查詢操作方法
- MyBatis?實現(xiàn)動態(tài)排序的多表查詢
- 深入解析MybatisPlus多表連接查詢
- Mybatis分頁查詢主從表的實現(xiàn)示例
- mybatis連接數(shù)據(jù)庫實現(xiàn)雙表查詢
相關文章
JProfiler11使用教程之JVM調優(yōu)問題小結
這篇文章主要介紹了JProfiler11使用教程之JVM調優(yōu),本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-03-03Java實現(xiàn)根據(jù)sql動態(tài)查詢并下載數(shù)據(jù)到excel
這篇文章主要為大家詳細介紹了如何使用Java實現(xiàn)根據(jù)sql動態(tài)查詢并下載數(shù)據(jù)到excel的功能,文中的示例代碼講解詳細,有需要的可以參考下2024-04-04談談Java中對象,類和this,super,static關鍵字的使用
對象:對象是類的一個實例,有狀態(tài)和行為。類:類是一個模板,它描述一類對象的行為和狀態(tài)。本文就來和大家聊聊Java中對象,類和關鍵字的使用,需要的可以參考一下2022-08-08SpringBoot Security前后端分離登錄驗證的實現(xiàn)
這篇文章主要介紹了SpringBoot Security前后端分離登錄驗證的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-09-09