mybatis一對多幾種mapper寫法

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>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章