Mybatis多表查询collection或association中column传入多个参数值

ElvElevatorsDto:提供分页查询参数拓展的实体
public class ElvElevatorsDto extends ElvElevators {
    private int pageNum = 1;
    private int pageSize = 10;
    //此处声明一个parameterCode是为了后面select标签里面t2表能获取到parameterCode
    private String parameterCode;
    //省略get和set

}
ElvElevatorsExt:用于返回头行查询结果的实体
public class ElvElevatorsExt extends ElvElevators {
    //行表集合
    private List<ElvElevatorParameters> parametersList;
    //行表中的code属性(为了在collection标签中的column也传入parameterCode)
    private String parameterCode;
    //省略get和set

}
ElvElevatorsExtMapper.xml:完成映射
<?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.yun.managers.extmapper.emp.ElvElevatorsExtMapper">
  <resultMap id="headerExtMap" type="com.yun.managers.extmapper.emp.extentity.ElvElevatorsExt">
    <result column="ELEVATOR_ID" jdbcType="DECIMAL" property="elevatorId" />
    <result column="ELEVATOR_NO" jdbcType="VARCHAR" property="elevatorNo" />
    <result column="ELEVATOR_SEQ" jdbcType="VARCHAR" property="elevatorSeq" />
    <result column="EQUIPMENT_CODE" jdbcType="VARCHAR" property="equipmentCode" />
    <result column="ELEVATOR_CLASS_CODE" jdbcType="VARCHAR" property="elevatorClassCode" />
    <result column="ELEVATOR_CLASS_DESC" jdbcType="VARCHAR" property="elevatorClassDesc" />
    <result column="ELEVATOR_TYPE_CODE" jdbcType="VARCHAR" property="elevatorTypeCode" />
    <result column="ELEVATOR_TYPE_DESC" jdbcType="VARCHAR" property="elevatorTypeDesc" />
    <result column="ELEVATOR_TYPE_SEQ_CODE" jdbcType="VARCHAR" property="elevatorTypeSeqCode" />
	<!- parameterCode为拓展的属性字段(elv_elevator_parameters表对应的字段)->
    <result column="PARAMETER_CODE" jdbcType="VARCHAR" property="parameterCode" />
	<!- 此处column多个参数使用{}将参数包起来->
    <collection property="parametersList" column="{elevatorId=ELEVATOR_ID,parameterCode=PARAMETER_CODE}" select="selectElvParamByElvId" javaType="ArrayList" ></collection>
  </resultMap>

  <resultMap id="elvParamMap" type="com.yun.managers.mapper.emp.entity.ElvElevatorParameters">
    <result column="ELEVATOR_PARAMETER_ID" jdbcType="BIGINT" property="elevatorParameterId" />
    <result column="ELEVATOR_ID" jdbcType="BIGINT" property="elevatorId" />
    <result column="PARAMETER_CODE" jdbcType="VARCHAR" property="parameterCode" />
    <result column="PARAMETER_VALUE" jdbcType="VARCHAR" property="parameterValue" />
    <result column="PARAMETER_VALUE_STR" jdbcType="VARCHAR" property="parameterValueStr" />
    <result column="PARAMETER_VALUE_NUM" jdbcType="BIGINT" property="parameterValueNum" />
    <result column="PARAMETER_VALUE_DATE" jdbcType="TIMESTAMP" property="parameterValueDate" />
  </resultMap>

  <select id="findElvElevatorsList"
          parameterType="com.yun.managers.dto.emp.ElvElevatorsDto"
          resultMap="headerExtMap">
    select t1.*,t2.PARAMETER_CODE from elv_elevators t1,elv_elevator_parameters t2
    where t1.ELEVATOR_ID = t2.ELEVATOR_ID
      <if test="elevatorNo !=null">
        and t1.ELEVATOR_NO = #{elevatorNo,jdbcType=VARCHAR}
      </if>
      <if test="parameterCode !=null">
        and t2.PARAMETER_CODE =#{parameterCode,jdbcType=VARCHAR}
      </if>
    ORDER BY t1.CREATION_DATE desc
  </select>
  
  <!- 此处parameterType使用java.util.Map来接收多个参数->
  <select id="selectElvParamByElvId" parameterType="java.util.Map" resultMap="elvParamMap">
    select * from elv_elevator_parameters where ELEVATOR_ID=#{elevatorId} and PARAMETER_CODE =#{parameterCode} order by CREATION_DATE desc
</select>

</mapper>

ElvElevatorsExtMapper :提供查询方法的接口

@Repository
public interface ElvElevatorsExtMapper {
    //方法名与mapper中的select标签的id一致
    List<ElvElevatorsExt> findElvElevatorsList(ElvElevatorsDto elvElevators);

}

这里原本的ElvElevators和ElvElevatorParameters两个实体就不再粘出来,从mapper文件中可知类中的属性有哪些

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值