Mybatis使用association定义关联查询对象规则
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 + "]"; }}
2、定义Mapper.xml文件内容,使用联合属性<association property=""></association>查询级联内容
3、指定那个属性是联合的对象和属性对象的类型。<association property="department" javaType="com.gwolf.bean.Department"></association>
4、定义association关联属性的一些设置 <association property="department" javaType="com.gwolf.bean.Department"> <id column="dept_id" property="deptId"/> <result column="dept_name" property="deptName"/> </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>
6、运行单元测试,查看员工的信息是否能够取到。