框架:mybatis常用标签(refid、foreach、trim)
1、mybatis中refid是什么意思
1、首先定義一個sql標簽,一定要定義唯一id
<sql id="Base_Column_List" >name,age</sql>
2、然后通過id引用
<select id="selectAll">
select?
<include refid="Base_Column_List" />
????from student
</select>
這個<include refid="Base_Column_List" />會自動把上面的代碼貼過來
即:
<select id="selectAll">
select?name,age
????from student
</select>
相當于mysql里的視圖!!!
2、mybatis動態sql中foreach標簽的使用
foreach標簽主要用于構建in條件,他可以在sql中對集合進行迭代。如下:
<delete id="deleteBatch">?
delete from user where id in
<foreach collection="array" item="id" index="index"?open="("? close=")" separator=","> #{id} </foreach>
</delete>
我們假如說參數為---- ?int[] ids = {1,2,3,4,5} ?----那么打印之后的SQL如下:
delete form user where id in (1,2,3,4,5)
釋義:
collection:collection屬性的值有三個分別是list、array、map三種,分別對應的參數類型為:List、數組、map集合,我在上面傳的參數為數組,所以值為array
item :表示在迭代過程中每一個元素的別名
index:表示在迭代過程中每次迭代到的位置(下標)
open :前綴
close:后綴
separator:分隔符,表示迭代時每個元素之間以什么分隔
我們通常可以將之用到批量刪除、添加等操作中。
相當于mysql里的游標!!!
3、mybatis動態sql中的trim標簽的使用
trim標記是一個格式化的標記(format),可以完成set或者是where標記的功能,如下代碼:
1、
select * from user?
<trim? prefix="WHERE" prefix override="AND |OR">
<if test="name != null and name.length()>0"> AND name= #{name}</if>
<if test="gender != null and gender.length()>0"> AND gender= #{gender}</if>
</trim>
假如說name和gender的值都不為null的話打印的SQL為:
select * from user where?? #??name = 'xx' and gender = 'xx'
在紅色#?標記的地方是不存在第一個and的,上面兩個屬性的意思如下:
prefix:前綴
prefixoverride:去掉第一個and或者是or
?
2、
update user
<trim prefix="set" suffix override="," suffix=" where id =#{id} ">
<if test="name != null and name.length()>0"> name=#{name} ,</if>
<if test="gender != null and gender.length()>0"> gender=#{gender} ,?</if>
</trim>
假如說name和gender的值都不為null的話打印的SQL為:
update user set name='xx' , gender='xx'?#??whereid='x'
在紅色標記的地方不存在逗號,而且自動加了一個set前綴和where后綴,上面三個屬性的意義如下,其中prefix意義如上:
suffixoverride:去掉最后一個逗號(也可以是其他的標記,就像是上面前綴中的and一樣)
suffix:后綴
?
總結
以上是生活随笔為你收集整理的框架:mybatis常用标签(refid、foreach、trim)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 框架:Mybatis开发规范及输入输出映
- 下一篇: 框架:Mybatis中使用sql几种特殊