MyBatis动态SQL——SQL片段

本文记录Java学习过程中遇到的MyBatis动态SQL——SQL片段~

可以将SQL中重复的SQL提取出来,使用时用include引用即可,最终达到sql重用的目的。

可以把查询用户的SQL语句的id, username, birthday, sex, address提取出来,作为sql片段。

示例代码:

<!-- 根据条件查询用户 -->
<select id="queryUserByWhere" parameterType="user" resultType="user">
	<!-- SELECT id, username, birthday, sex, address FROM `user` -->
	<!-- 使用include标签加载sql片段;refid是sql片段id -->
	SELECT <include refid="userFields" /> FROM `user`
	<!-- where标签可以自动添加where关键字,同时处理sql语句中第一个and关键字 -->
	<where>
		<if test="sex != null">
			AND sex = #{sex}
		</if>
		<if test="username != null and username != ''">
			AND username LIKE
			'%${username}%'
		</if>
	</where>
</select>
<!-- 声明sql片段 -->
<sql id="userFields">
	id, username, birthday, sex, address
</sql>

如果要使用别的Mapper.xml配置的sql片段,可以在refid前面加上对应的Mapper.xml的namespace。

示例代码:

<!-- 根据性别和用户名查询 -->
<select id="queryUserByWhere" parameterType="user" resultType="user">
	select <include refid="ren.oliver.mybatis.mapper.OrderMapper.userFields" /> from `user`
	<where>
		<if test="sex != null">
			AND sex = #{sex}
		</if>
		<if test="username != null and username != ''">
			AND username LIKE '%${username}%'
		</if>
	</where>
</select>

标签: none