<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 星