Mybatis的Collection父子查询嵌套传递值(使用父的传递值)

Mybatils

  • 前言
  • 一、dto层的代码(mapper包下)
  • 二、entity类
  • 三、mapper.xml中
  • 仰天大笑出门去,我辈岂是蓬蒿人


前言

大概内容:

介绍了在Mybatis.xml中去使用collection标签完成子查询,collection标签的一种使用方法


提示:以下是本篇文章正文内容,下面案例可供参考

一、dto层的代码(mapper包下)


    /**
     * 获取工程概况
     *
     * @param ids
     * @return {@code List}
     */
    List<ProjectData> getServey(String ids);

二、entity类

/**
 * 工程管理对象 project_manage
 * 
 * @author 杨永卓
 */
@Data
public class ProjectData extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /** id */
    private String id;

    /** 工程名称 */
    private String projectName;

    private List<ProjectFile> projectFiles;
}

三、mapper.xml中

  • 都标有对应的注释,相当于把两个查询的结果合在了一起
	<--! type表示dto层的返回类型,property是返回类型里面的参数,column是sql的字段 -->
    <resultMap type="ProjectData" id="ProjectDataResult">
        <result property="id" column="id"/>
        <result property="projectName" column="project_name"/>
        <--! ofType对应的是下面resultMap的type, column里是要传递的父类值 select是查询的sql -->
        <collection property="projectFiles" ofType="ProjectFile" column="{id=id,type=type}"
        			select="selectFiles"
        />
    resultMap>

    <resultMap type="ProjectFile" id="ProjectFileResult">
        <result property="id" column="id"/>
        <result property="type" column="type"/>
        <result property="fileName" column="file_name"/>
    resultMap>
	
	<--! 注意:resultMap表示映射返回的名称 -->
    <select id="getServey" resultMap="ProjectDataResult">
        select 
        id,
        project_name,
        from project_manage
        where id in (${ids})
        order by id desc
    select>

	<--! 注意:parameterType 为Map是因为column="{id=id,type=type}" 是键值对 -->
    <select id="selectFiles" resultMap="ProjectFileResult" parameterType="Map">
        select 
        id,
        type,
        file_name
        from project_file
        where id = #{id}
        and type= #{type}
    select>

仰天大笑出门去,我辈岂是蓬蒿人

你可能感兴趣的:(#,Mybatis,mybatis,java,数据库)