最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mybatis中xml之trim屬性說(shuō)明

 更新時(shí)間:2021年07月13日 09:48:13   作者:chenpuzhen  
這篇文章主要介紹了mybatis中xml之trim屬性說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

mybatis的xml中trim標(biāo)簽有四個(gè)屬性

1.prefix 前綴增加的內(nèi)容

2.suffix 后綴增加的內(nèi)容

3.prefixOverrides 前綴需要覆蓋的內(nèi)容,一般是第一個(gè)判斷條件前面的多余的結(jié)構(gòu),如:第一個(gè)判斷條件前面多了 ‘a(chǎn)nd'

4.suffixOverrides 后綴需要覆蓋的內(nèi)容,一般是最后一個(gè)數(shù)據(jù)的后面符號(hào),如:set值的時(shí)候,最后一個(gè)值的后面多一個(gè)逗號(hào)‘,'

舉幾個(gè)例子:

1.根據(jù)用戶姓名和年齡查詢用戶,有什么值就根據(jù)什么條件(目的是說(shuō)明幾個(gè)屬性用法,可能例子不適用于實(shí)際場(chǎng)景中)

select * from User where name='zhangsan' and age='20';
<select id='queryUser'>
        select * from User
        <trim prefix='where' prefixOverrides='and'>
            <if test="name != null and name != ''">
                name = #{name}
            </if>
            <if test="age !=null and age !=''">
                and age = #{age}
            </if>
        </trim>
<select>

上面例子是很常規(guī)的一個(gè)寫(xiě)法,第一個(gè)條件前面沒(méi)有任何符號(hào),第二個(gè)條件要加上and,否則sql語(yǔ)句會(huì)報(bào)錯(cuò)。很理想的狀態(tài)是第一個(gè)和第二個(gè)都有值,但是既然判斷,說(shuō)明也可能會(huì)沒(méi)有值,當(dāng)?shù)谝粋€(gè)name沒(méi)有值的時(shí)候,這個(gè)時(shí)候sql語(yǔ)句就會(huì)是

select * from User where and age='',很明顯這個(gè)sql語(yǔ)句語(yǔ)法存在問(wèn)題。在這里標(biāo)簽屬性prefixOverrides就起作用了,它會(huì)讓前綴where覆蓋掉第一個(gè)and。覆蓋之后的是:select * from User where age='';

前綴加上where就不說(shuō),因?yàn)閷傩?prefix='where',這個(gè)where 也可以寫(xiě)在<trim>標(biāo)簽的外面,這樣此處就無(wú)需用到屬性prefix了。

現(xiàn)在有更方便的標(biāo)簽了,就是<where>,用這個(gè)標(biāo)簽效果一樣的,會(huì)忽略掉第一個(gè)符合條件前面的符號(hào)。

select * from User 
<where>
             <if test="name != null and name != ''">
                name = #{name}
            </if>
            <if test="age !=null and age !=''">
                and age = #{age}
            </if>
</where>

如果第一個(gè)name值是null,則age前面的and會(huì)被忽略掉。

再說(shuō)說(shuō)另兩個(gè)屬性,suffix和suffixOverrides。

如:更新用戶的信息,哪些字段有值就更新哪些字段,sql語(yǔ)句如下:

<update id="updateUser">
    update User
    <trim prefix="set" suffixOverrides="," suffix="where id='1'">
        <if test="name != null and name != ''">
            name=#{name},
        </if>
        <if test="age != null and age !=''">
            age=#{age},
        </if>
    </trim>
</update>

本例中最后一個(gè)條件中的逗號(hào)“,”會(huì)被后綴覆蓋掉,本例中的后綴是where id =‘1';

OK,純屬為了說(shuō)明四個(gè)屬性怎么使用的,具體里面的值會(huì)根據(jù)具體需求而定。希望舉一反三~

trim標(biāo)簽的使用場(chǎng)景

使用trim標(biāo)簽去除多余的逗號(hào)

如果紅框里面的條件沒(méi)有匹配上,sql語(yǔ)句會(huì)變成如下:

INSERT INTO role(role_name,) VALUES(roleName,)

插入將會(huì)失敗。

做如下修改:

其中最重要的屬性是

suffixOverrides=","

表示去除sql語(yǔ)句結(jié)尾多余的逗號(hào).

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java?Stream去重常見(jiàn)的多種方法及示例

    Java?Stream去重常見(jiàn)的多種方法及示例

    這篇文章主要介紹了Java?Stream中實(shí)現(xiàn)去重的多種方法,包括使用distinct()、Collectors.toMap、filter和groupingBy等,詳細(xì)說(shuō)明了每種方法的應(yīng)用場(chǎng)景和示例代碼,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-04-04
  • Java并發(fā)(Runnable+Thread)實(shí)現(xiàn)硬盤(pán)文件搜索功能

    Java并發(fā)(Runnable+Thread)實(shí)現(xiàn)硬盤(pán)文件搜索功能

    這篇文章主要介紹了Java并發(fā)(Runnable+Thread)實(shí)現(xiàn)硬盤(pán)文件搜索,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • Java插入排序算法實(shí)現(xiàn)方法例子

    Java插入排序算法實(shí)現(xiàn)方法例子

    所謂排序,是將一組數(shù)據(jù)按照特定順序重新排列的過(guò)程,穩(wěn)定排序算法中相同鍵值的元素排序后保持原有順序,直接插入排序和希爾排序是插入排序的兩種形式,這篇文章主要介紹了Java插入排序算法實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2024-10-10
  • Java中的static靜態(tài)變量、靜態(tài)方法超詳細(xì)講解

    Java中的static靜態(tài)變量、靜態(tài)方法超詳細(xì)講解

    Java中的static關(guān)鍵字用于表示靜態(tài)變量和靜態(tài)方法,靜態(tài)變量是類的成員變量,它們屬于類本身,而不是類的實(shí)例,這篇文章主要給大家介紹了關(guān)于Java中static靜態(tài)變量、靜態(tài)方法詳細(xì)講解的相關(guān)資料,需要的朋友可以參考下
    2024-06-06
  • java使用RSA加密方式實(shí)現(xiàn)數(shù)據(jù)加密解密的代碼

    java使用RSA加密方式實(shí)現(xiàn)數(shù)據(jù)加密解密的代碼

    這篇文章給大家分享java使用RSA加密方式實(shí)現(xiàn)數(shù)據(jù)加密解密,通過(guò)實(shí)例代碼文字相結(jié)合給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友參考下
    2019-11-11
  • Java?Stream實(shí)現(xiàn)多字段分組groupingBy操作詳解

    Java?Stream實(shí)現(xiàn)多字段分組groupingBy操作詳解

    Stream是Java8的一個(gè)新特性,主要用戶集合數(shù)據(jù)的處理,如排序、過(guò)濾、去重等等功能,本文就來(lái)講講如何利用Stream實(shí)現(xiàn)比較優(yōu)雅的按多字段進(jìn)行分組groupingBy吧
    2023-06-06
  • Java中final、static關(guān)鍵字與方法的重寫(xiě)和繼承易錯(cuò)點(diǎn)整理

    Java中final、static關(guān)鍵字與方法的重寫(xiě)和繼承易錯(cuò)點(diǎn)整理

    這篇文章主要給大家介紹了關(guān)于Java中final、static關(guān)鍵字與方法的重寫(xiě)和繼承易錯(cuò)點(diǎn)的相關(guān)資料,在Java編程中final關(guān)鍵字用于限制方法或類的進(jìn)一步修改,final方法不能被子類重寫(xiě),而static方法不可被重寫(xiě),只能被遮蔽,需要的朋友可以參考下
    2024-10-10
  • 升級(jí)dubbo2.7.4.1版本平滑遷移到注冊(cè)中心nacos

    升級(jí)dubbo2.7.4.1版本平滑遷移到注冊(cè)中心nacos

    這篇文章主要為大家介紹了2.7.4.1的dubbo平滑遷移到注冊(cè)中心nacos的兩種版本升級(jí)方案,以及為什要升級(jí),有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2022-02-02
  • Spring Cloud學(xué)習(xí)教程之DiscoveryClient的深入探究

    Spring Cloud學(xué)習(xí)教程之DiscoveryClient的深入探究

    這篇文章主要給大家介紹了關(guān)于Spring Cloud學(xué)習(xí)教程之DiscoveryClient的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-04-04
  • Mybatis的核心架構(gòu)及源碼解讀

    Mybatis的核心架構(gòu)及源碼解讀

    這篇文章主要介紹了Mybatis的核心架構(gòu)及源碼解讀,mybatis是一款半自動(dòng)化的持久層框架,它封裝了JDBC操作,支持定制化SQL,高級(jí)映射,但它的數(shù)據(jù)庫(kù)無(wú)關(guān)性較低,需要的朋友可以參考下
    2023-08-08

最新評(píng)論

长乐市| 潢川县| 都昌县| 蓝山县| 宁乡县| 华容县| 枝江市| 上犹县| 海城市| 阿克苏市| 教育| 盐山县| 观塘区| 宽甸| 定边县| 金阳县| 涡阳县| 保德县| 麻江县| 柳河县| 富宁县| 土默特左旗| 改则县| 金溪县| 城固县| 丹阳市| 来宾市| 邯郸市| 济源市| 外汇| 双城市| 宁远县| 三亚市| 伊通| 克什克腾旗| 都兰县| 珲春市| 日照市| 乐昌市| 贡嘎县| 库车县|