中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Mybatis聯合查詢怎么實現

發布時間:2022-01-07 13:31:56 來源:億速云 閱讀:145 作者:iii 欄目:開發技術

本篇內容主要講解“Mybatis聯合查詢怎么實現”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Mybatis聯合查詢怎么實現”吧!

    數據庫表結構

    Mybatis聯合查詢怎么實現

    department

    Mybatis聯合查詢怎么實現

    employee

    Mybatis聯合查詢怎么實現

    Mybatis聯合查詢怎么實現

    要求一

    現在的要求是輸入 id 把 employee 表的對應員工數據查詢出來,并且查詢出該員工的所處部門信息

    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、級聯屬性封裝結果集

    實現

    這個要求很明顯就要用到兩個表,想要把部門信息封裝到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));
        }

    結果

    Mybatis聯合查詢怎么實現

    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));
        }

    結果

    Mybatis聯合查詢怎么實現

    要求二

    現在的要求是輸入 id 把 department 表對應的部門信息查詢出來,并且查詢該部門下的所有員工信息

    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、級聯屬性封裝結果集

    方法

    <!--   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));
        }

    結果

    Mybatis聯合查詢怎么實現

    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));
        }

    結果

    Mybatis聯合查詢怎么實現

    到此,相信大家對“Mybatis聯合查詢怎么實現”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    城口县| 灵台县| 黎川县| 台北市| 安塞县| 齐齐哈尔市| 馆陶县| 中山市| 甘孜| 新沂市| 府谷县| 盘锦市| 安顺市| 梨树县| 牡丹江市| 清丰县| 重庆市| 海安县| 通州市| 康保县| 浠水县| 莒南县| 湖州市| 滦南县| 格尔木市| 施秉县| 孟津县| 霍州市| 岢岚县| 建水县| 广水市| 吐鲁番市| 京山县| 任丘市| 商丘市| 石林| 明溪县| 泾阳县| 绥化市| 顺平县| 徐闻县|