mybatis 一对多 一对一 两种不同实现方式及其使用场景

       mybatis 大家常用的持久性框架,昨天无聊挖挖屎山,发现关联查询和不同的使用场景,遂做点笔记,怕老了自己不顶用就忘了。

mybatis 1:N (collection)、1:1(association),分别有两种实现方法 集合嵌套查询(select)、集合嵌套结果(resultMap)。两种方式分别有它们适用的使用场景。

       集合嵌套查询(select)属于每次发出的请求sql 都是1+N(主表数据条数)条,一条主表sql,N条子表查询sql,主表sql数据拉大的这时候你感觉效率有点让人头疼,这时候就不得不说一个 fetchType(默认值 true/开启 false) 标签  “按需查询” ,意思说他不会主动去执行第二条子查询语句,只有你在对象时候触发字表对象get属性请求的时候它才会执行子查询sql,这是让我喜欢的它原因之一。

       集合嵌套结果(resultMap)属于那种直接处理查询结果集的,查询出一批数据,它会自动帮我自动归类打包装箱。比较适合一次性查询所有关联数据,执行一次sql。

集合嵌套查询(select

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.xyc.cloud.dao.IIndicatorTaskDao">
<resultMap id="BaseResultMap"  type="com.xyc.cloud.bean.IndicatorTask" >
	<result column="task_id" property="taskId" jdbcType="VARCHAR" />
	<result column="dept_code" property="deptCode" jdbcType="VARCHAR" />
	<result column="dept_name" property="deptName" jdbcType="VARCHAR" />
	<result column="type_code" property="typeCode" jdbcType="VARCHAR" />
	<result column="type_name" property="typeName" jdbcType="VARCHAR" />
	<re
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值