正在回答 回答被采纳积分+1
同学你好。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>
所以如下代码组装了一个id为employee的resultMap,它对应的实体类型是Employee。Employee中有一个声明为Department的属性department。所以使用<association>将Department类关联过来,关联的部分有二,一是Department的主键对应的属性sn,在结果集中对应的列名为dsn。二是Department的属性name对应的结果集中的列名dname。
<resultMap id="employee" type="Employee"> <id property="sn" column="sn" javaType="String"/> <result property="password" column="password" javaType="String"/> <result property="name" column="name" javaType="String"/> <result property="departmentSn" column="department_sn" javaType="String"/> <result property="post" column="post" javaType="String"/> <association property="department" column="department_sn" javaType="Department" > <id property="sn" column="dsn" javaType="String"/> <result property="name" column="dname" javaType="String"/> </association> </resultMap>
如果解答了同学的疑问,望采纳~
祝学习愉快~
department_sn是数据库中对应employee实体类中department属性,
也就是说,这里应该是一个Department类型的对象,但是数据库中对应的是department_sn
那么 ,我们应该通过外键,去查出这个Department类型的对象,这里的dsn是为了与sql语句中的其的别名一致。
如果你在建表的时候,employee表和department表的字段名没有相同的,那么association里面可以没有其他标签,也就是dname和name不用配置了
如果两个表的字段有相同的名字,就把对应的column改一个名字
注意看下面的查询,这个地方保持一致就可以了
这里其实对应的是字段的别名。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
- 参与学习 人
- 提交作业 323 份
- 解答问题 8263 个
本阶段将带你学习主流框架SSM,以及SpringBoot ,打通成为Java工程师的最后一公里!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星