sql封装相关

resultMap 指定属性封装
当二级属性可以在同一条sql查出

<select id="get" resultMap="baseResultMap">
SELECT id, name, deptId
FROM employee
WHERE id = #{id}
</select>
<resultMap type="Employee" id="baseResultMap">
<!-- 什么列名对应值封装到对象的什么属性上 -->
<id column="id" property="id"/>
<result column="name" property="name"/>
<!-- 特别地, 属性可以是一级属性的属性(二级属性) -->
<result column="deptId" property="dept.id"/>
</resultMap>

associate 指定属性封装
当二级属性可以在同一条sql查出

<resultMap type="Employee" id="baseResultMap">
<id column="id" property="id"/>
<result column="name" property="name"/>
<!-- 此处可以用前缀减少列标题的书写繁琐 -->
<association columnPrefix="d_" property="dept" javaType="Department">
    <result column="id" property="id"/>
    <result column="name" property="name"/>
</association>
</resultMap>

associate 发送额外查询
当二级属性不能在同一条sql查出

<resultMap type="Employee" id="baseResultMap">
    <id column="id" property="id"/>
    <result column="name" property="name"/>
    <!--
    使用额外 SQLassociation 针对的关联属性配置,
    非集合类型
    select 发送什么额外SQL,通常指向已有的 sql 语句(namespace+sqlID)
    column 发送额外 SQL 参数取上一条 SQL 哪个列的值
    property 封装员工对象的什么属性
    -->
    <association select="cn.wolfcode.mapper.DepartmentMapper.get"
                 column="deptId" property="dept"
                 javaType="Department"/>
</resultMap>

<select id="get" resultMap="baseResultMap">
    SELECT id, name, deptId FROM employee WHERE id =
    #{id}
</select>

<!-- 额外 sql 语句 -->
<select id="get" resultType="Department">
    SELECT id, name FROM department WHERE id = #{id}
</select>

collection 封装集合属性
当存在三级属性时

<resultMap type="Department" id="baseResultMap">
    <id column="id" property="id"/>
	<result column="name" property="name"/>
	<!-- 
	若关联属性是集合类型,使用 collection 来配置 select 发送额外的SQL
	column: 额外 SQL 查询用的参数, 在主 sql 中查出
	property: 查询结果封装到哪个一级属性里
	oftype: 指定二级属性的类型(此处为 Employee),因为子 sql 指定了, 可以忽略
	javatype: 指定一级属性的类型(此处为“java.util.ArrayList”), 可以忽略
	-->
    <collection select="cn.wolfcode.mapper.EmployeeMapper.queryByDeptId"
                column="id" property="employees" oftype="Employee"/>
</resultMap>
<select id="get" resultMap="baseResultMap">
    SELECT id, name FROM department WHERE id = #{id}
</select>

<!-- 额外 sql -->
<select id="queryByDeptId" resultType="Employee">
    SELECT id, name, deptId FROM employee WHERE deptId = #{deptId}
</select>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值