create table t_company
(
id NUMBER(12) not null,
name VARCHAR2(128),
code VARCHAR2(32),
address VARCHAR2(256),
telephone VARCHAR2(18)
)
create table t_employee
(
id NUMBER(12) not null,
name VARCHAR2(48),
sex NUMBER(1),
job VARCHAR2(48),
salary NUMBER(12,2),
company_id NUMBER(12)
)
@Data
public class Company implements Serializable {
private Integer id;
private String name;
private String code;
private String address;
private String telephone;
private List<Employee> employees;
}
@Data
public class Employee implements Serializable {
private Integer id;
private String name;
private int sex;
private String job;
private double salary;
private Integer companyID;
}
輸出各個公司以及所屬員工信息:
<!--mothod one -->
<resultMap id="companyOne" type="com.example.mybatis01.entity.Company">
<id column="id" property="id"></id>
<result column="name" property="name"></result>
<result column="code" property="code"></result>
<result column="address" property="address"></result>
<result column="telephone" property="telephone"></result>
<collection property="employees" ofType="com.example.mybatis01.entity.Employee"
javaType="java.util.ArrayList">
<id column="eid" property="id"></id>
<result column="ename" property="name"></result>
<result column="sex" property="sex"></result>
<result column="job" property="job"></result>
<result column="salary" property="salary"></result>
<result column="company_id" property="companyID"></result>
</collection>
</resultMap>
<select id="findAllCompanysOne" resultMap="companyOne">
select c.id,c.name,c.code,c.address,c.telephone,
e.id eid,e.name ename,e.sex,e.job,e.salary,e.company_id
from t_company c left join t_employee e on c.id = e.company_id
</select>
<!--method two-->
<resultMap id="companyTwo" type="com.example.mybatis01.entity.Company">
<id column="id" property="id"></id>
<result column="name" property="name"></result>
<result column="code" property="code"></result>
<result column="address" property="address"></result>
<result column="telephone" property="telephone"></result>
<collection property="employees" ofType="com.example.mybatis01.entity.Employee"
select="selectEmployee" column="id" autoMapping="true">
</collection>
</resultMap>
<select id="findAllCompanysTwo" resultMap="companyTwo">
select c.id,c.name,c.code,c.address,c.telephone from t_company c
</select>
<select id="selectEmployee" resultType="com.example.mybatis01.entity.Employee">
select id,name,sex,job,salary from t_employee where company_id = #{id}
</select>
<!--method three-->
<resultMap id="companyThree" type="com.example.mybatis01.entity.Company">
<id column="id" property="id"></id>
<result column="name" property="name"></result>
<result column="code" property="code"></result>
<result column="address" property="address"></result>
<result column="telephone" property="telephone"></result>
<collection property="employees" ofType="com.example.mybatis01.entity.Employee"
resultMap="EmployeeThree" javaType="java.util.ArrayList">
</collection>
</resultMap>
<resultMap id="EmployeeThree" type="com.example.mybatis01.entity.Employee">
<id column="eid" property="id"></id>
<result column="ename" property="name"></result>
<result column="sex" property="sex"></result>
<result column="job" property="job"></result>
<result column="salary" property="salary"></result>
<result column="company_id" property="companyID"></result>
</resultMap>
<select id="findAllCompanysThree" resultMap="companyThree">
select c.id,c.name,c.code,c.address,c.telephone,
e.id eid,e.name ename,e.sex,e.job,e.salary,e.company_id
from t_company c left join t_employee e on c.id = e.company_id
</select>
<!--method four-->
<?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.example.mybatis01.mapper.CompanyMapper">
<resultMap id="companyFour" type="com.example.mybatis01.entity.Company">
<id column="id" property="id"></id>
<result column="name" property="name"></result>
<result column="code" property="code"></result>
<result column="address" property="address"></result>
<result column="telephone" property="telephone"></result>
<collection property="employees" ofType="com.example.mybatis01.entity.Employee"
select="com.example.mybatis01.mapper.EmployeeMapper.findEmployeeByCom"
column="id" autoMapping="true">
</collection>
</resultMap>
<select id="findAllCompanysFour" resultMap="companyFour">
select c.id,c.name,c.code,c.address,c.telephone from t_company c
</select>
</mapper>
<?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.example.mybatis01.mapper.EmployeeMapper">
<resultMap id="employee" type="com.example.mybatis01.entity.Employee">
<id column="id" property="id"></id>
<result column="name" property="name"></result>
<result column="sex" property="sex"></result>
<result column="job" property="job"></result>
<result column="salary" property="salary"></result>
<result column="company_id" property="companyID"></result>
</resultMap>
<select id="findEmployeeByCom" resultMap="employee">
select e.id,e.name,e.sex,e.job,e.salary,e.company_id
from t_employee e where e.company_id = #{id}
</select>
</mapper>