Mybatis使用association定义关联查询对象规则

2025-11-02 20:01:59

1、我们在程序中需要查询员工的时候同时查询出部门信息。

package com.gwolf.bean;

public class Employee implements java.io.Serializable{

        private Integer empId;

        

        private String empName;

        

        public Employee() {

                

        }

        

        public Employee(Integer empId, String empName, String email, String gender) {

                this.empId = empId;

                this.empName = empName;

                this.email = email;

                this.gender = gender;

        }

        private String email;

        

        private String gender;

        

        private Department department;

        

        public Department getDepartment() {

                return department;

        }

        public void setDepartment(Department department) {

                this.department = department;

        }

        public Integer getEmpId() {

                return empId;

        }

        public void setEmpId(Integer empId) {

                this.empId = empId;

        }

        public String getEmpName() {

                return empName;

        }

        public void setEmpName(String empName) {

                this.empName = empName;

        }

        public String getEmail() {

                return email;

        }

        public void setEmail(String email) {

                this.email = email;

        }

        public String getGender() {

                return gender;

        }

        public void setGender(String gender) {

                this.gender = gender;

        }

        

        @Override

        public String toString() {

                return "Employee [empId=" + empId + ", empName=" + empName + ", email="

                                + email + ", gender=" + gender + "]";

        }

}

Mybatis使用association定义关联查询对象规则

2、定义Mapper.xml文件内容,使用联合属性

<association property=""></association>

查询级联内容

Mybatis使用association定义关联查询对象规则

3、指定那个属性是联合的对象和属性对象的类型。

<association property="department" javaType="com.gwolf.bean.Department">

</association>

Mybatis使用association定义关联查询对象规则

4、定义association关联属性的一些设置

<association property="department" javaType="com.gwolf.bean.Department">

      <id column="dept_id" property="deptId"/>

      <result column="dept_name" property="deptName"/>

</association>

Mybatis使用association定义关联查询对象规则

5、整体代码如下:

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE mapper

  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.gwolf.dao.EmployeeMapper">

        <!-- 

                namespace:名称空间

                id:唯一标识

                resultType:返回值类型

                #{empId}:从传递过来的参数取出empId值

         -->

         

         

        <resultMap type="com.gwolf.bean.Employee" id="MyDifEmp">

                <id column="emp_id" property="empId"/>

                <result column="emp_name" property="empName"/>

                <result column="gender" property="gender"/>

                <result column="email" property="email"/>

                <result column="emp_name" property="empName"/>

                

                <association property="department" javaType="com.gwolf.bean.Department">

                        <id column="dept_id" property="deptId"/>

                        <result column="dept_name" property="deptName"/>

                </association>

        </resultMap>

        

  <select id="getEmpById" resultType="employee" databaseId="mysql" resultMap="MyDifEmp">

    SELECT e.emp_id, e.emp_name, e.gender, e.email, e.d_id,d.dept_id,d.dept_name

    

        FROM tbl_emp e join tbl_dept d on e.d_id=d.dept_id where e.emp_id = #{empId}

  </select>

  

  <select id="getEmpByIdReturnMap" resultType="com.gwolf.bean.Employee">

         SELECT e.emp_id, e.emp_name, e.gender, e.email, e.d_id

    

        FROM tbl_emp e  where e.emp_id = #{empId}

  </select>

  

  <insert id="addEmp" parameterType="employee" 

        useGeneratedKeys="true" keyProperty="empId" >

        insert into tbl_emp(emp_name,email,gender) 

        

        value(#{empName},#{email},#{gender})

  </insert>

  

  

  

  

  

  

  

  

  

   <insert id="addEmp" parameterType="employee"  databaseId="oracle">

                <selectKey keyProperty="empId" order="BEFORE" resultType="Integer">

                        select employees_seq.nextval from dual

                </selectKey>

                

                insert into tbl_emp(emp_id,emp_name,email,gender) 

                

                value(#{empId},#{empName},#{email},#{gender})

  </insert>

  

  

  

  

  

  

  

  

</mapper>

Mybatis使用association定义关联查询对象规则

6、运行单元测试,查看员工的信息是否能够取到。

Mybatis使用association定义关联查询对象规则

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢