<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>30
收起
正在回答
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"。而视频中就是使用的第二种方式
不过为了更加严谨,还要建议书写时能够和表内的外键名称保持一致,此处视频我们安排处理。略有疏漏还请同学多多包涵。
祝学习愉快~
4. SSM到Spring Boot入门与综合实战
- 参与学习 人
- 提交作业 323 份
- 解答问题 8263 个
本阶段将带你学习主流框架SSM,以及SpringBoot ,打通成为Java工程师的最后一公里!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星