主要用来做主子表的联查

    <resultMap type="Project" id="ProjectResult">
        <result property="id" column="id"/>
        <result property="projectNo" column="project_no"/>
        <result property="contractId" column="contract_id"/>
        <result property="customerName" column="customer_name"/>
        <result property="province" column="province"/>

        <collection property="orderlist" javaType="java.util.ArrayList" ofType="com.fferp.sale.domain.File">
            <id column="b_id" property="id" />
            <result column="b_url" property="url" />
            <result column="b_name" property="name" />
        </collection>

    </resultMap>

这是主表跟他的文件表

property="orderlist"  property属性是用来标识子表的数据在主表的里的名字

如果主表跟子表列名有重复的,一定要起个别名区别一下

 
<select id="selectProjectList" parameterType="Project"
            resultMap="ProjectResult">
        select
        a.id AS id,
        a.project_no,
        a.contract_id AS contract_id,
        a.customer_name AS customer_name,
        a.province AS province,
        b.id as b_id,
        b.url as b_url,
        b.name as b_name
        from
        order a
        LEFT JOIN order_file b on a.id = b.relation_id 
</select>

实体类:主表

public class Project  {

    /** ID */
    private String id;

    /** 项目号 */
    private String projectNo;

    /** 合同表ID */
    private String contractId;

    /** 客户名称 */
    private String customerName;

    /** 所属省 */
    private Integer province;

    /** 文件 */
    private List<SaleCommonFile> orderlist;
}

子表

public class File {
  
    private String id;

    /** 关联ID */
    private String relationId;

    /** 文件路径 */
    private String url;

    /** 文件名称 */
    private String name;
}

更多推荐

mybatis collection 标签的使用