mybatis的resultMap标签内部标签的column属性

文章介绍了MyBatis中的resultMap映射规则,特别是column如何对应SQL查询结果集的列名或别名。当SQL查询中使用AS设置别名时,column应匹配别名;否则,匹配字段名。示例展示了如何配置resultMap以处理一对多关系的实体映射。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

mybatis是一款半自动的ORM持久层框架,具有较高的SQL灵活性,支持高级映射(一对一,一对多),动态SQL,延迟加载和缓存等特性,
本次只说明一个问题
resultMap 映射规则之一:column 对应的是 sql结果集(resultSet)的key(列名),
如果sql中使用as作为key,column的接收就是as别名,如果没有as,就用字段名作为接收参数名,


一、准备(实体类、mapper、xml)

主类(医生)

	public class Zhu{
	  private String Id;
	  private String name;
	  private String age;
	  private Lsit<zi> ziList;
		
		//get and set ...
	}

子类(患者)

	public class Zi{
	  private String Id;
	  private String name;
	  private String age;
	  private String zhuId;
		
		//get and set ...
	}

主类和子类是一对多的关系(一个医生对应多个患者)

-- resultMap 映射规则之一:column 对应的是 sql结果集(resultSet)的key(列名),
   如果sql中使用as作为key,column的接收就是as别名,如果没有as,就用字段名作为接收参数名,

	在本次查询中,
	第一:执行selectZhu,返回自定义的resultMap(resultSer结果集)
			其内部结果为:
						set[ 
							//map
							{[列名或别名 : 值][列名或别名:值]...}]
			所以 resultMap 内部定义的 column 值必须为查询结果的key名


	<resultMap id="BaseResultMapQuery" type="com.xxx.cloud.xxx.vo.Zhu">
        <id column="sid" property="id" />
        <result column="sname" property="name"/>
        <result column="sage" property="age"/>
        <collection  property="drugApplyDetailTempQueryVOList" column="sid"
                     ofType="com.xxx.cloud.xxx.vo.Zi"     				
                     select="selectZi" />
    </resultMap>
	
	
	<select id="selectZhu" resultMap="BaseResultMapQuery">
		SELECT  
		   ID as sid,
		   name as sname,
		   age as sage
		FROM T_ZHU WHERE ID = #{id}
	</select>
	
	<select id="selectZi" resultType="com.xxx.cloud.xxx.vo.Zi">
		SELECT  
		   ID as sid,
		   name as sname,
		   age as sage
		FROM T_ZI WHERE ID = #{id}
	</select>



总结

resultMap 映射规则之一:column 对应的是 sql结果集(resultSet)的key(列名),
如果sql中使用as作为key,column的接收就是as别名,如果没有as,就用字段名作为接收参数名,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值