Mybatis创建表关系

一对一的表关系

实现一对一映射 这时需要我们在类上设置好对应的对象属性

然后在映射文件的resultMap中 通过association标签进行配置

配置的方法有两种:

一种是通过联表查询 直接将两张表的数据一次都查询出来,

然后将副表的字段在association标签内进行映射

一种是通过对association标签设置select属性和column属性

让要对本条记录进行映射时 再次进行一次根据我们设置的column属性的值为参数的子查询

并将子查询的结果集映射成我们的实体类对象 再赋值给我们对应的属性上

完成一条记录的映射后 循环进行下一条记录的组装

两种方式的区别:

第一种方式实际上只对数据库进行了一次查询

而第二种方式对数据库进行多次的请求访问

<!-- 一对一 -->
	<!-- 方式一 联表查询 -->
	<resultMap type="Student" id="oneToOne">
		<id column="sId" property="sId"/>
		<result column="sName" property="sName"/>
		<!-- 属性是个实体类对象 -->
		<association property="teacher" javaType="Teacher">
			<id column="tId" property="tId"/>
			<result column="tName" property="tName"/>
		</association>
	</resultMap>
	<select id="selectOneToOne" resultMap="oneToOne">
		select * from student s
		left join teacher t  
		on s.teacherId = t.tid;
	</select>
	
	<!-- 方式二 -->
	<resultMap type="Student" id="findOneToOne">
		<id column="sId" property="sId"/>
		<result column="sName" property="sName"/>
		<association property="teacher" select="findTeacher" column="teacherId"></association>
	</resultMap>
	<select id="findOneToOne" resultMap="findOneToOne">
		select * from student
	</select>
	<resultMap type="Teacher" id="teacherMap">
		<id column="tId" property="tId"/>
		<result column="tName" property="tName"/>
	</resultMap>
	<select id="findTeacher" resultMap="teacherMap" parameterType="int">
		select * from teacher
		where tid = #{0}
	</select>

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值