association

association

http://img1.sycdn.imooc.com//climg/5cfdb6020001565210890405.jpg

我想问一下上面的property中值和column的值都是写来一样的,因为是按照实体类的属性名和数据库的字段名对应成映射关系就可以。

然后在<association>标签中,老实说property和colmumn中的两个值不能写来一样,否则会报错,有点懵了,难道<association>标签中的<result>使用和前者的不一样?

正在回答

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

4回答

同学你好。

1、运行如下sql,可以看出,如果是不取别名。查出的结果集会如下所示:

http://img1.sycdn.imooc.com//climg/5cff3cbc0001212b05590058.jpg

http://img1.sycdn.imooc.com//climg/5cff3ca40001486e08120130.jpg

但是取别名 结果集就不同了:

http://img1.sycdn.imooc.com//climg/5cff3d1b00013d5408260127.jpg

可以看到,如果没有别名。在查询出来的结果中,列名是相同的。

2、resultMap的作用是将多张表联合查询的结果集中的字段,自动对应到对应的实体(包括主实体和其中嵌套的关联实体)中:

<!--column对应的是结果集的列名,不是原表的。property是对应实体的属性名。-->
<resultMap id="唯一的标识" type="映射的对象类型">
  <id column="主表的主键列名" jdbcType="字段类型" property="映射对象的主键属性" />
  <result column="主表的对应属性列名" jdbcType="字段类型" property="映射对象的属性"/>
  <association property="主对象中存储关联对象的属性名" javaType="关联的实体对象类型">
    <id column="关联表的主键对应的结果集中的列名" jdbcType="字段类型" property="关联对象的主键属性"/>
    <result  column="关联表的属性对应的结果集中的列名" jdbcType="字段类型" property="关联对象的属性"/>
  </association>
</resultMap>

如果解答了同学的疑问,望采纳~

祝学习愉快~


提问者 Simon___ 2019-06-10 19:21:16

http://img1.sycdn.imooc.com//climg/5cfe3c170001be0b10180584.jpg

老师,association中的column可以看成后面的这个查询出来的相当于一个新表的字段名,可以这么理解吧,但http://img1.sycdn.imooc.com//climg/5cfe3c9500013f3511070091.jpg如果我不要别名了,同时把association里面清空,单纯这样看这个sql语句我也知道sn是department表的字段,name也是department的字段(虽然这样最终页面查询不出来),难道这个别名配置一定要配吗

好帮手慕阿满 2019-06-10 18:57:08

同学你好,association中的result标签也是在映射,不过这里的是映射别的表中的字段,为避免字段名相同造成查询出错,才起的别名。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 Simon___ #1
    就是不太清楚这个sn和name字段在department表中和Employee表中哪里冲突了,可以利用表名.字段名查询啊,因为表名都不一样,但是如果这么写,association里面不关联又会出错难道association标签里面一定要配置关联的信息以及一定要配置别名吗
    2019-06-10 19:55:49
好帮手慕阿满 2019-06-10 15:48:48

同学你好,这里的<association>标签中的<result>使用是不一样的,result中的column就是具体数据库中对应的字段名即可,而association中,如果association中的column需要和查询出来的字段设置的别名相同,如:

http://img1.sycdn.imooc.com/climg/5cfe0b5b0001844009760425.jpg

如果select中的ce.name和d.name都写为name,无法分清具体是那个name,所以设置了别名,而association中的column和设置的别名要保持一致。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 Simon___ #1
    哦~,所以老师,association中的result标签其实就起一个取别名的作用吧,和前面的result标签作用不同,前者是真正地在做映射关系,后者只是为了一个取别名的作用,可以这么理解吗
    2019-06-10 18:48:18
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
SSM主流框架入门与综合项目实战2018版
  • 参与学习           人
  • 提交作业       205    份
  • 解答问题       4317    个

Java中非常实用的SSM整合开发内容,从Spring开始,到MyBaits的进阶内容,再到SpringMVC的应用,最后是SSM整合开发案例,逐步深入,助你成长为一名Java工程师!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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