Mybatis中的<sql>和<include>

<sql>标签

<sql> 标签是用来定义可重用的 SQL 代码段。
<sql> 标签可以被包含在其他语句里面, 使用 <include> 标签来包含。
<sql> 标签里面是可以使用 ${} 占位符参数化的(注意, 此处的参数不是调用时传进来的), 不同的属性值通过包含的实例而变化。

<sql>标签中可以包含的标签

所有的动态 SQL 相关的节点都是可以有的。
用的最多的就是 <include> 节点。

<include>标签

通过include标签使SQL片段达到代码复用的目的。
<include>标签必须要有 refid, 可以有0个或多个 property。 通过 property 标签, 将的属性包含进来。
引用另一个xml文件中的<sql>时,要加上命名空间,若被引用的xml文件存在嵌套,要写明命名空间:

<mapper namespace="com.test.mapper1">
  	<sql id="status">(1,2,3,4)</sql>
  	<sql id="where"> STATUS IN <include refid="com.test.mapper1.status"/> </sql>
</mapper>
<mapper namespace="com.test.mapper2">
  	select * from table where <include refid="com.test.mapper1.where"/></sql>
</mapper>

select * from table where status in (1,2,3,4)

例子

<sql id="sometable">
  ${prefix}Table
</sql>

<sql id="someinclude">
  from
    <include refid="${include_target}"/>
</sql>

<select id="select" resultType="map">
  select
    field1, field2, field3
  <include refid="someinclude">
    <property name="prefix" value="Some"/>
    <property name="include_target" value="sometable"/>
  </include>
</select>

select field1, field2, field3 from SomeTable;

<sql id="student"> ${alias}.id,${alias}.name </sql>
<select id="selectStudent" resultType="map">
  select
    <include refid="student"><property name="alias" value="t1"/></include>
  from student t1
</select>

select t1.id, t1.name from student t1;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值