3 MyBatis動(dòng)態(tài)SQL之set標(biāo)簽|轉(zhuǎn)
1 MyBatis動(dòng)態(tài)SQL之if 語(yǔ)句
2 MyBatis動(dòng)態(tài)sql之where標(biāo)簽|轉(zhuǎn)
3 MyBatis動(dòng)態(tài)SQL之set標(biāo)簽|轉(zhuǎn)
4 MyBatis動(dòng)態(tài)SQL之trim元素|轉(zhuǎn)
5 MyBatis動(dòng)態(tài)sql中foreach標(biāo)簽的使用
6 MyBatis動(dòng)態(tài)SQL之choose(when、otherwise)語(yǔ)句
7 MyBatis動(dòng)態(tài)SQL之bind標(biāo)簽|轉(zhuǎn)
??關(guān)于動(dòng)態(tài)更新語(yǔ)句還可以使用set元素,它可以被用于動(dòng)態(tài)包含需要更新的列,而舍去其它的。set標(biāo)記是MyBatis提供的一個(gè)智能標(biāo)記,我一般將其用在修改的sql中,例如下述場(chǎng)景:
<update>
update tb_employee
<set>
<if test="name != null and name.length()>0">name = #{name},</if>
<if test="sex != null and gender.length()>0">sex = #{sex},</if>
<if test="age != null">age=#{age},</if>
<if test="phone != null">phone=#{phone},</if>
</set>
where id = #{id}
</update>
??set元素會(huì)動(dòng)態(tài)前置SET關(guān)鍵字,同時(shí)也會(huì)自動(dòng)抹去where查詢條件前多余的逗號(hào),避免因?yàn)槭褂脳l件語(yǔ)句在生成賦值語(yǔ)句的后面留下不需要的逗號(hào)。在上述的代碼片段當(dāng)中,假如前三個(gè)字段都有值,那么在控制臺(tái)打印的SQL語(yǔ)句如下:
update tb_employee set name='xxx', sex='xx', age='yyy' where id='x'
??在上面yyy的后面是沒(méi)有逗號(hào)的,也就是說(shuō)set標(biāo)記已經(jīng)智能地幫助我們把最后一個(gè)逗號(hào)給去掉了。
??來(lái)看看與 set 元素等價(jià)的自定義 trim 元素吧:
<trim prefix="SET" suffixOverrides=",">
...
</trim>
??注意,我們覆蓋了后綴值設(shè)置,并且自定義了前綴值。
Reference
Buy me a coffee. ?Get red packets.
浙公網(wǎng)安備 33010602011771號(hào)