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

Mybatis聯(lián)合查詢的實現(xiàn)方法

 更新時間:2022年01月07日 11:35:40   作者:WorkHaH  
本文主要介紹了 Mybatis聯(lián)合查詢的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

數(shù)據(jù)庫表結(jié)構(gòu)

department

employee

要求一

現(xiàn)在的要求是輸入 id 把 employee 表的對應(yīng)員工數(shù)據(jù)查詢出來,并且查詢出該員工的所處部門信息

public class Employee {
    private Integer id;
    private String lastName;
    private String email;
    private String gender;
    private Department dept;
	setter和getter.......
}
public class Department {
    private Integer id;
    private String departmentName;
    setter和getter.......
}

1、級聯(lián)屬性封裝結(jié)果集

實現(xiàn)

這個要求很明顯就要用到兩個表,想要把部門信息封裝到Employee對象的dept字段需要用到resultMap屬性

方法一

 <!-- public Employee getEmployee(int id); -->
<select id="getEmployee" resultMap="emp1">
	select e.*, d.id did, d.department_name
	from employee e,
		department d
	where e.d_id = d.id
	and e.id = #{id}
</select>
<resultMap id="emp1" type="employee">
	<id column="id" property="id"/>
	<result column="last_name" property="lastName"/>
	<result column="email" property="email"/>
	<result column="gender" property="gender"/>
	<result column="did" property="dept.id"/>
	<result column="department_name" property="dept.departmentName"/>
</resultMap>

方法二

<!-- public Employee getEmployee(int id); -->
<select id="getEmployee" resultMap="emp2">
	select e.*, d.id did, d.department_name
	from employee e,
		department d
	where e.d_id = d.id
	and e.id = #{id}
</select>
<resultMap id="emp2" type="employee">
	<id column="id" property="id"/>
	<result column="last_name" property="lastName"/>
	<result column="email" property="email"/>
	<result column="gender" property="gender"/>
	<association property="dept" javaType="department">
		<id column="did" property="id"/>
		<result column="department_name" property="departmentName"/>
	</association>
</resultMap>

測試

 	@Test
    public void test1() {
        SqlSession sqlSession = MyTest.getSqlSession();
        EmployeeMapper mapper = sqlSession.getMapper(EmployeeMapper.class);
        System.out.println(mapper.getEmployee(1));
    }

結(jié)果

2、分步查詢

方法

DepartmentMapper.xml

<!-- public Department getDepartment2(int id); -->
<select id="getDepartment2" resultType="department">
	select * from department where id = #{id}
</select>

EmployeeMaper.xml

<!-- public Employee getEmployee2(int id); -->
<!-- 分步查詢 -->
<select id="getEmployee2" resultMap="emp3">
	select * from employee where id = #{id}
</select>
<resultMap id="emp3" type="employee">
	<id column="id" property="id"/>
	<result column="last_name" property="lastName"/>
	<result column="email" property="email"/>
	<result column="gender" property="gender"/>
	<association property="dept" select="com.workhah.mapper.department.DepartmentMapper.getDepartment2" column="d_id"/>
</resultMap>

測試

 	@Test
    public void test1() {
        SqlSession sqlSession = MyTest.getSqlSession();
        EmployeeMapper mapper = sqlSession.getMapper(EmployeeMapper.class);
        System.out.println(mapper.getEmployee2(1));
    }

結(jié)果

要求二

現(xiàn)在的要求是輸入 id 把 department 表對應(yīng)的部門信息查詢出來,并且查詢該部門下的所有員工信息

public class Employee {
    private Integer id;
    private String lastName;
    private String email;
    private String gender;
	setter和getter.......
}
public class Department {
    private Integer id;
    private String departmentName;
    private List<Employee> employees;
    setter和getter.......
}

3、級聯(lián)屬性封裝結(jié)果集

方法

<!--   public Department getDepartment(int id); -->
<select id="getDepartment" resultMap="dep1">
	select d.*, e.id eid, e.last_name, e.email, e.gender
	from department d
		left join employee e on d.id = e.d_id
	where d.id = #{id}
</select>
<resultMap id="dep1" type="department">
	<id column="id" property="id"/>
	<result column="department_name" property="departmentName"/>
	<collection property="employees" ofType="employee">
		<id column="eid" property="id"/>
		<result column="last_name" property="lastName"/>
		<result column="email" property="email"/>
		<result column="gender" property="gender"/>
	</collection>
</resultMap>

測試

 	@Test
    public void test2() {
        SqlSession sqlSession = MyTest.getSqlSession();
        DepartmentMapper mapper = sqlSession.getMapper(DepartmentMapper.class);
        System.out.println(mapper.getDepartment(1));
    }

結(jié)果

4、分步查詢

EmployeeMaper.xml

<!--  public List<Employee> getEmployeeByDid(int did); -->
<select id="getEmployeeByDid" resultType="employee">
	select *
	from employee
	where d_id = #{did}
</select>

DepartmentMapper.xml

<!-- public Department getDepartment3(int id); -->
<select id="getDepartment3" resultMap="dep2">
	select *
	from department
	where id = #{id}
</select>
<resultMap id="dep2" type="department">
	<id column="id" property="id"/>
	<result column="depart_name" property="departName"/>
	<collection property="employees" ofType="employee"
		select="com.workhah.mapper.employee.EmployeeMapper.getEmployeeByDid" column="id"/>
</resultMap>

測試

 	@Test
    public void test2() {
        SqlSession sqlSession = MyTest.getSqlSession();
        DepartmentMapper mapper = sqlSession.getMapper(DepartmentMapper.class);
        System.out.println(mapper.getDepartment3(1));
    }

結(jié)果

到此這篇關(guān)于 Mybatis聯(lián)合查詢的實現(xiàn)方法的文章就介紹到這了,更多相關(guān) Mybatis聯(lián)合查詢內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java定時任務(wù)ScheduledThreadPoolExecutor示例詳解

    Java定時任務(wù)ScheduledThreadPoolExecutor示例詳解

    這篇文章主要介紹了Java定時任務(wù)ScheduledThreadPoolExecutor示例詳解,這里使用scheduleAtFixedRate方法安排一個任務(wù),該任務(wù)是一個 Runnable 匿名類,其run方法中調(diào)用了new LoginViewTimeTask().loginStatisticsHandle()方法,需要的朋友可以參考下
    2023-11-11
  • SpringBoot如何讀取xml配置bean(@ImportResource)

    SpringBoot如何讀取xml配置bean(@ImportResource)

    這篇文章主要介紹了SpringBoot如何讀取xml配置bean(@ImportResource),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Java中ShardingSphere 數(shù)據(jù)分片的實現(xiàn)

    Java中ShardingSphere 數(shù)據(jù)分片的實現(xiàn)

    其實很多人對分庫分表多少都有點恐懼,我們今天用ShardingSphere 給大家演示數(shù)據(jù)分片,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • SpringBoot開發(fā)詳解之Controller接收參數(shù)及參數(shù)校驗

    SpringBoot開發(fā)詳解之Controller接收參數(shù)及參數(shù)校驗

    數(shù)據(jù)校驗是為了使系統(tǒng)更完整,數(shù)據(jù)更精確,同時也有利于維護數(shù)據(jù)的安全性,下面這篇文章主要給大家介紹了關(guān)于SpringBoot開發(fā)詳解之Controller接收參數(shù)及參數(shù)校驗的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • hibernate5.2的基本配置方法(詳解)

    hibernate5.2的基本配置方法(詳解)

    下面小編就為大家?guī)硪黄猦ibernate5.2的基本配置方法(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • java多線程數(shù)據(jù)分頁處理實例講解

    java多線程數(shù)據(jù)分頁處理實例講解

    在本篇內(nèi)容里小編給大家分享了一篇關(guān)于java多線程數(shù)據(jù)分頁處理實例講解內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2021-01-01
  • 如何使用Idea中的 Deployment 實現(xiàn)打包自動部署

    如何使用Idea中的 Deployment 實現(xiàn)打包自動部署

    這篇文章主要介紹了使用Idea中的 Deployment 實現(xiàn)打包自動部署,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-08-08
  • Java基礎(chǔ)之Bean的創(chuàng)建、定位和使用

    Java基礎(chǔ)之Bean的創(chuàng)建、定位和使用

    這篇文章主要介紹了Java基礎(chǔ)之Bean的創(chuàng)建、定位和使用,文中有非常詳細(xì)的圖文示例及代碼,對正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-05-05
  • IntelliJ IDEA2023中運行Spring Boot找不到VM options進行端口的修改的問題解決

    IntelliJ IDEA2023中運行Spring Boot找不到VM options進

    這篇文章主要介紹了IntelliJ IDEA2023中運行Spring Boot找不到VM options進行端口的修改的問題解決,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • Java中的動態(tài)代理實現(xiàn)代碼實例

    Java中的動態(tài)代理實現(xiàn)代碼實例

    這篇文章主要介紹了Java中的動態(tài)代理實現(xiàn)代碼實例,jdk動態(tài)代理本質(zhì)上是使用被代理對象的類加載器,通過被代理類實現(xiàn)的接口在運行時動態(tài)構(gòu)造出代理類來增強原始類的功能的方法,需要的朋友可以參考下
    2023-12-12

最新評論