<association>标签中 column是什么意思?

<association>标签中 column是什么意思?

下面xml语句中,<association property="dealer" column="next_deal_sn" javaType="Employee">

column 为什么=“next_deal_sn”而不是deal_record表中的"deal_sn"?可以使用deal_sn吗?

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.4//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.imooc.oa.dao.DealRecordDao">

    <resultMap id="deal_record" type="DealRecord">
        <id property="id" column="id" javaType="Integer"/>
        <result property="claimVoucherId" column="claim_voucher_id" javaType="Integer"/>
        <result property="dealSn" column="deal_sn" javaType="String"/>
        <result property="dealTime" column="deal_time" javaType="java.util.Date"/>
        <result property="dealWay" column="deal_way" javaType="String"/>
        <result property="dealResult" column="deal_result" javaType="String"/>
        <result property="comment" column="comment" javaType="String"/>
        <association property="dealer" column="next_deal_sn" javaType="Employee">
            <result property="name" column="ename" javaType="String"/>
            <result property="post" column="epost" javaType="String"/>
        </association>
    </resultMap>
    
        <insert id="insert" parameterType="DealRecord">
        insert into deal_record(claim_voucher_id,deal_sn,deal_time,deal_way,deal_result,comment)
        values (#{claimVoucherId},#{dealSn},#{dealTime},#{dealWay},#{dealResult},#{comment})
    </insert>
    <select id="selectByClaimVoucher" resultMap="deal_record">
        select d.*,e.name ename,e.post epost
        from deal_record d
        left join employee e on d.deal_sn = e.sn
        where d.claim_voucher_id = #{cvid} order by d.deal_time
    </select>

</mapper>


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好。可以使用"deal_sn"

由于这个地方的column="next_deal_sn"没有被实际用到,所以写为column="next_deal_sn"也没有出现问题

这个地方可以这么理解:假定通过外键查询学生的年级,可以直接在association内完成通过外键完成查询,那么此时的column就必须是书写正确的和表内的一致,例如:

<resultMap type="Student" id="studentResult">         
    <id property="id" column="id"/>
    <association property="grade" column="gradeId" select="com.imooc.dao.GradeDao.getGrade">
      </association> 
 </resultMap>

但是也可以使用复合查询,即:

  <resultMap type="Student" id="studentResult">
      <id property="id" column="id"/>
      <result property="name" column="name"/>
      <result property="age" column="age"/>
      <association property="grade" column="gradeId" javaType="Grade"> 
        <id property="id" column="id"/> 
        <result property="name" column="name"/>
      </association>
  </resultMap>
  <select id="getStudent" resultMap="studentResult">
       SELECT * FROM student LEFT OUTER JOIN grade ON grade.id=student.gradeId WHERE student.id=#{id}
  </select>

此时这个column="gradeId"就不会被真正使用到,所以此时在运行起来就没有上面一种方法严格,这个地方也可以不写column="gradeId"。而视频中就是使用的第二种方式

不过为了更加严谨,还要建议书写时能够和表内的外键名称保持一致,此处视频我们安排处理。略有疏漏还请同学多多包涵。

祝学习愉快~


问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师