MyBatis_MyBatis之动态SQL之抽取可重用的SQL片段

1.引入

   我们在编写基本的增删改查的时候会经常重复的使用到相同的SQL语句。那么为了方便操作以及减少编写代码的工作量。MyBatis为我们提供了可以重复使用SQL片段。

 

2.抽取相关sql片段以及使用注意事项
 (1)、sql抽取:经常将要查询的列名,或者插入用的列名抽取出来方便引用
 (2)、include来引用已经抽取的sql:
 (3)、include还可以自定义一些property,sql标签内部就能使用自定义的属性
              include-property:取值的正确方式${prop}
              #{不能使用这种方式}

 

3.基本使用示例

(1).查询操作的映射文件


<!--抽取的SQL片段,可以在其他位置复用-->
<sql id="insertColumn">
	  		<if test="_databaseId=='oracle'">
	  			employee_id,last_name,email
	  		</if>
	  		<if test="_databaseId=='mysql'">
	  			last_name,email,gender,d_id
	  		</if>
</sql>


<!-MySQL批量操作-->
<insert id="addEmps">
	 	insert into tbl_employee(
	 		<include refid="insertColumn"></include>
	 	) 
		values
		<foreach collection="emps" item="emp" separator=",">
			(#{emp.lastName},#{emp.email},#{emp.gender},#{emp.dept.id})
		</foreach>
</insert>



<!--Oracle批量-->
insert into employees(
	 		<!-- 引用外部定义的sql -->
	 		<include refid="insertColumn">
	 			<property name="testColomn" value="abc"/>
	 		</include>
	 	)
	 			
           <foreach collection="emps" item="emp" separator="union"
	 				open="select employees_seq.nextval,lastName,email from("
	 				close=")">
	 				select #{emp.lastName} lastName,#{emp.email} email from dual
	 		</foreach>
 </insert>


 

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页