mybatis一对多,多条件关联查询

1.*Mapper.java 文件内容

    /**
     *派单组列表
     */
    List<DisGroupListDTO> groupList(@Param("groupName") String groupName, 
                                    @Param("workTypes")List<String> workTypes,
                                    @Param("orgId")String orgId);


    /**
     * 获取组列表
     */
    List<DisGroupOrgDTO> getGroupOrgList(@Param("groupId")String groupId,
                                         @Param("orgId")String orgId);

2.*Mapper.xml 先声明 resultMap

    <resultMap id="groupListMap" type="com.beauty.dispatch.pojo.dto.DisGroupListDTO">
        <id property="id" column="id"/>
        <collection property="orgList"
                    column="{groupId=id,orgId=orgId}"
                    javaType="java.util.List"
                    ofType="com.beauty.dispatch.pojo.dto.DisGroupOrgDTO"
                    select="com.beauty.riskAudit.mapper.DispatchGroupMapper.getGroupOrgList"/>
    </resultMap>

对应返回的实体类:

@Data
public class DisGroupListDTO {

    /**
     * 主id
     */
    private String id;

    /**
     * 群名称
     */
    private String groupName;

    /**
     * 工作类型:platform_audit 平台审核 platform_hf 平台回访 platform_dh 平台贷后  org_audit 机构审核 org_hf 机构回访 org_dh 机构贷后
     */
    private String workType;

    /**
     * 分期机构列表
     */
    private List<DisGroupOrgDTO> orgList;
}
  • collection定义关联集合类型的属性的封装规则 
  • ofType:指定集合里面元素的类型
  • collection中的column属性是数据库中的列名,或着是列的别名,用来传递给select属性所指定语句中的参数
  • property 指定类中那个字段
  • select 指定使用那个mapper的方法

3.sql查询,一 

<select id="groupList" resultMap="groupListMap">
        SELECT
            id,
            group_name groupName,
            work_type workType,
            #{orgId} orgId
        FROM
            dispatch_group
        WHERE
            `status` = 1
            AND work_type IN
            <foreach collection="workTypes" open="(" close=")" item="workType" separator=",">
                #{workType}
            </foreach>
            <if test="groupName != null and groupName != ''">
                AND group_name LIKE CONCAT( '%', #{groupName}, '%' )
            </if>
        ORDER BY
            create_date DESC
    </select>

多:

<select id="getGroupOrgList" resultType="com.beauty.dispatch.pojo.dto.DisGroupOrgDTO">
        SELECT
            org_id orgId,
            org_name orgName
        FROM
            dispatch_group_org
        WHERE
            `status` = 1
            AND group_id = #{groupId}
            <if test="orgId != null and orgId != ''">
                AND org_id = #{orgId}
            </if>
    </select>


版权声明:本文为raobo0917原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。