国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

mybatis trim標(biāo)簽使用詳解

這篇具有很好參考價(jià)值的文章主要介紹了mybatis trim標(biāo)簽使用詳解。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

mybatis trim標(biāo)簽使用詳解

mybatis的trim標(biāo)簽一般用于去除sql語(yǔ)句中多余的and關(guān)鍵字,逗號(hào),或者給sql語(yǔ)句前拼接 “where“、“set“以及“values(“ 等前綴,或者添加“)“等后綴,可用于選擇性插入、更新、刪除或者條件查詢等操作。

以下是trim標(biāo)簽中涉及到的屬性:

prefix=添加前綴 suffix=添加后綴

prefixOverrides=去掉前綴 suffixOverrides=去掉后綴

屬性 描述
prefix 給sql語(yǔ)句拼接的前綴
suffix 給sql語(yǔ)句拼接的后綴
prefixOverrides 去除sql語(yǔ)句前面的關(guān)鍵字或者字符,該關(guān)鍵字或者字符由prefixOverrides屬性指定,假設(shè)該屬性指定為"AND",當(dāng)sql語(yǔ)句的開(kāi)頭為"AND",trim標(biāo)簽將會(huì)去除該"AND"
suffixOverrides 去除sql語(yǔ)句后面的關(guān)鍵字或者字符,該關(guān)鍵字或者字符由suffixOverrides屬性指定

一、使用trim標(biāo)簽去除多余的and關(guān)鍵字(和where對(duì)比)

<select id="findActiveBlogLike"
     resultType="Blog">
  SELECT * FROM BLOG 
  WHERE 
  <if test="state != null">
    state = #{state}
  </if> 
  <if test="title != null">
    AND title like #{title}
  </if>
  <if test="author != null and author.name != null">
    AND author_name like #{author.name}
  </if>
</select>

如果這些條件沒(méi)有一個(gè)能匹配上會(huì)發(fā)生什么?最終這條 SQL 會(huì)變成這樣:

SELECT * FROM BLOG
WHERE

這會(huì)導(dǎo)致查詢失敗。如果僅僅第二個(gè)條件匹配又會(huì)怎樣?這條 SQL 最終會(huì)是這樣:

SELECT * FROM BLOG
WHERE 
AND title like 'someTitle'

你可以使用where標(biāo)簽來(lái)解決這個(gè)問(wèn)題,where 元素只會(huì)在至少有一個(gè)子元素的條件返回 SQL 子句的情況下才去插入“WHERE”子句。而且,若語(yǔ)句的開(kāi)頭為“AND”或“OR”,where 元素也會(huì)將它們?nèi)コ?/p>

<select id="findActiveBlogLike"
     resultType="Blog">
  SELECT * FROM BLOG 
  <where> 
    <if test="state != null">
         state = #{state}
    </if> 
    <if test="title != null">
        AND title like #{title}
    </if>
    <if test="author != null and author.name != null">
        AND author_name like #{author.name}
    </if>
  </where>
</select>

trim標(biāo)簽也可以完成相同的功能,寫(xiě)法如下:

<trim prefix="WHERE" prefixOverrides="AND">
	<if test="state != null">
	  state = #{state}
	</if> 
	<if test="title != null">
	  AND title like #{title}
	</if>
	<if test="author != null and author.name != null">
	  AND author_name like #{author.name}
	</if>
</trim>

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

mybatis trim標(biāo)簽使用詳解
如果紅框里面的條件沒(méi)有匹配上,sql語(yǔ)句會(huì)變成如下:

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

多出來(lái)多余的逗號(hào),插入將會(huì)失敗。
使用trim標(biāo)簽可以解決此問(wèn)題,只需做少量的修改,如下所示:
mybatis trim標(biāo)簽使用詳解
其中最重要的屬性是

suffixOverrides=","

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

同時(shí),為了更明確trim的幾個(gè)屬性的關(guān)系 ,如下兩個(gè)xml是等價(jià)的

<insert id="insertSelective">
   insert into BZ_EVENTINFOGS
   (
      <if test="eventinfoid != null">
        EVENTINFOID,
      </if>
      <if test="eventinfoname != null">
        EVENTINFONAME,
      </if>
   )
   values (
      <if test="eventinfoid != null">
        #{eventinfoid,jdbcType=VARCHAR},
      </if>
      <if test="eventinfoname != null">
        #{eventinfoname,jdbcType=VARCHAR},
      </if>
   )

等價(jià)于

<insert id="insertSelective">
   insert into BZ_EVENTINFOGS
   <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="eventinfoid != null">
        EVENTINFOID,
      </if>
      <if test="eventinfoname != null">
        EVENTINFONAME,
      </if>
   <trim prefix="values (" suffix=")" suffixOverrides=",">
      <if test="eventinfoid != null">
        #{eventinfoid,jdbcType=VARCHAR},
      </if>
      <if test="eventinfoname != null">
        #{eventinfoname,jdbcType=VARCHAR},
      </if>

即開(kāi)頭所述:

prefix=添加前綴 suffix=添加后綴

prefixOverrides=去掉前綴 suffixOverrides=去掉后綴文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-460497.html

到了這里,關(guān)于mybatis trim標(biāo)簽使用詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • mybatis的<choose>標(biāo)簽使用

    記錄 :418 場(chǎng)景 :使用MyBatis的choose/choose標(biāo)簽的when/when標(biāo)簽的test屬性,對(duì)入?yún)傩缘闹底龇莕ull(!=null)、非空(!=\\\'\\\')判斷,或者與常量做相等(==)或者不等判斷(!=)。 版本 :JDK 1.8,Spring?Boot 2.6.3,mybatis-3.5.9。 1.基礎(chǔ)知識(shí) 1.1MyBatis的標(biāo)簽 (1)查看MyBatis支持的標(biāo)簽 地址:http://mybatis.org/d

    2024年02月08日
    瀏覽(25)
  • Mybatis中where標(biāo)簽和if標(biāo)簽結(jié)合使用說(shuō)明

    由于不小心將 and 或者 or 寫(xiě)在了語(yǔ)句后面,導(dǎo)致mybatis無(wú)法自主判別,這種問(wèn)題在新上手的同學(xué)中很是常見(jiàn)。下面我們探討一下,在哪些情況下Mybatis無(wú)法判斷動(dòng)態(tài)SQL語(yǔ)句中的 and 或者 or 。 select篩選出視圖對(duì)象的參數(shù),用于給前端返回頁(yè)面參數(shù)使用。 以下代碼格式是正確,我們

    2023年04月08日
    瀏覽(21)
  • MyBatis 動(dòng)態(tài)SQL的標(biāo)簽有哪些?如何使用?

    MyBatis 動(dòng)態(tài)SQL的標(biāo)簽有哪些?如何使用?

    目錄 1. MyBatis 動(dòng)態(tài)SQL標(biāo)簽有什么用? 2. if 標(biāo)簽 3. where 標(biāo)簽 4. trim 標(biāo)簽 5. choose,when,otherwise 6. foreach 1. MyBatis 動(dòng)態(tài)SQL標(biāo)簽有什么用? 我來(lái)說(shuō)一個(gè)場(chǎng)景大家就明白了,如下圖,大家應(yīng)該在鐵路12306上買(mǎi)過(guò)火車票吧,可以看到,我們?cè)谶x票的時(shí)候可以對(duì)車做很多種選擇和篩選,系

    2024年02月11日
    瀏覽(49)
  • Mybatis 的多種標(biāo)簽使用以及 Spring 框架單元測(cè)試

    Mybatis 的多種標(biāo)簽使用以及 Spring 框架單元測(cè)試

    在講解 Mybatis 的標(biāo)簽之前, 要先介紹一下另一個(gè) Java 的好幫手 Spring 框架內(nèi)置的 JUnit 測(cè)試框架. 為什么要在 Mybatis 學(xué)習(xí)之前了解 JUnit 呢 ? 很大一部分原因不僅僅是因?yàn)閱卧獪y(cè)試是寫(xiě)完項(xiàng)目后開(kāi)發(fā)人員自己需要做的, 更重要的是當(dāng)前階段學(xué)習(xí)中, 利用 JUnit 可以更簡(jiǎn)單的構(gòu)造數(shù)據(jù)來(lái)

    2024年02月09日
    瀏覽(37)
  • Spring+MyBatis使用collection標(biāo)簽的兩種使用方法

    Spring+MyBatis使用collection標(biāo)簽的兩種使用方法

    目錄 項(xiàng)目場(chǎng)景: 實(shí)戰(zhàn)操作: 1.創(chuàng)建菜單表 2.創(chuàng)建實(shí)體? 3.創(chuàng)建Mapper 4.創(chuàng)建xml? 屬性描述: 效率比較: 本文說(shuō)明了Spring Boot+MyBatis使用collection標(biāo)簽的兩種使用方法 1. 方法一: 關(guān)聯(lián)查詢 2. 方法二: 嵌套select查詢 這里只創(chuàng)建一張表,樹(shù)結(jié)構(gòu)只有兩級(jí),方便學(xué)習(xí),多表關(guān)聯(lián)是同樣的

    2024年02月09日
    瀏覽(29)
  • mybatis之動(dòng)態(tài)sql、if\choose\when\otherwise\trim\where\set\foreach\bind有案例

    定義 :根據(jù)不同條件拼接SQLy語(yǔ)句,實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)更準(zhǔn)的操作。 實(shí)現(xiàn)方式 :映射器配置文件或者注解 常用動(dòng)態(tài)SQL元素 : if元素 :判斷語(yǔ)句,但條件分支判斷 choose元素 :when、otherwise;多條件分支判斷,等同于Java中的switch trim元素 :where,set;輔助元素,用于處理一些SQL拼接

    2024年02月02日
    瀏覽(23)
  • mybatis-plus如何使用枚舉類來(lái)實(shí)現(xiàn)性別和標(biāo)簽的數(shù)字帶描述

    mybatis-plus如何使用枚舉類來(lái)實(shí)現(xiàn)性別和標(biāo)簽的數(shù)字帶描述

    文章目錄 目錄 文章目錄 前言 一、環(huán)境準(zhǔn)備 二、使用步驟 一 實(shí)體類 二 枚舉類? 三 持久層 四 控制層? 總結(jié) 枚舉是一種表示一組有限可能取值的數(shù)據(jù)類型。它具有以下幾個(gè)好處: 易于理解和維護(hù):枚舉提供了一種清晰明了的方式來(lái)表示一組具體的取值,使代碼更易于理解

    2024年02月11日
    瀏覽(24)
  • MyBatis動(dòng)態(tài)sql之批量修改、批量新增(使用foreach標(biāo)簽的一條sql語(yǔ)句解決)

    ????????批量新增和批量修改在業(yè)務(wù)中是很常見(jiàn)的,一條sql訪問(wèn)數(shù)據(jù)庫(kù)和通過(guò)代碼循環(huán)體中循環(huán)訪問(wèn)數(shù)據(jù)庫(kù)做單個(gè)數(shù)據(jù)新增修改相比較下:一條sql訪問(wèn)數(shù)據(jù)庫(kù)性能上明顯提升,代碼且簡(jiǎn)潔明了 1、Mapper.java中 說(shuō)明: 參數(shù)是list ?2、Mapper.xml中 說(shuō)明: 通過(guò)trim標(biāo)簽拼接前后綴和

    2024年02月10日
    瀏覽(22)
  • 5.4 如何在Mybatis中使用insert標(biāo)簽并返回主鍵id?-- 教你通用做法

    5.4 如何在Mybatis中使用insert標(biāo)簽并返回主鍵id?-- 教你通用做法

    通過(guò) 《上文》,我們學(xué)會(huì)了XML映射文件Mapper的創(chuàng)建,以及最常用的select標(biāo)簽和resultMap標(biāo)簽,本文主要講解 insert標(biāo)簽 ,用于和insert SQL語(yǔ)句映射,非常簡(jiǎn)單上手,只有兩個(gè)點(diǎn)可以擴(kuò)展講講:一個(gè)點(diǎn)是 insert后返回主鍵id(會(huì)介紹兩種方式) ,另外一個(gè)點(diǎn)是 實(shí)現(xiàn)批量添加 ,原本打算

    2024年02月06日
    瀏覽(22)
  • PHP使用ltrim、rtrim以及trim處理中文時(shí)遇到的“坑”

    說(shuō)坑有點(diǎn)過(guò)分,更多的是自己寫(xiě)代碼的時(shí)候,沒(méi)有考慮全面,導(dǎo)致自己踩坑了。 發(fā)現(xiàn)經(jīng)過(guò) rtrim 處理的字符串無(wú)法入庫(kù),檢查后發(fā)現(xiàn)數(shù)據(jù)庫(kù)報(bào)錯(cuò)信息: General error: 1366 Incorrect string value: ‘xxxxxxx’ for column xxxxx 其實(shí)看到這個(gè)報(bào)錯(cuò),就能立馬意識(shí)到問(wèn)題所在:字符串被不正確的截

    2024年02月01日
    瀏覽(14)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包