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

Mybatis使用XML實現(xiàn)動態(tài)sql的示例代碼

 更新時間:2023年12月03日 16:30:14   作者:魚跡  
當(dāng)編寫 MyBatis 中復(fù)雜動態(tài) SQL 語句時,使用 XML 格式是一種非常靈活的方式,本文主要為大家詳細(xì)介紹了Mybatis使用XML實現(xiàn)動態(tài)sql的具體方法,需要的可以參考下

前言

當(dāng)編寫 MyBatis 中復(fù)雜動態(tài) SQL 語句時,使用 XML 格式是一種非常靈活的方式。這樣做可以根據(jù)不同條件動態(tài)生成 SQL 查詢,更新或刪除語句。以下是一篇簡要的教程,詳細(xì)介紹如何使用 MyBatis XML 來編寫動態(tài) SQL。

1. 動態(tài)條件查詢

假設(shè)有一個 User 實體,有 id、username 和 email 字段,我們希望根據(jù)不同條件查詢用戶信息。

<!-- 在 Mapper XML 文件中編寫動態(tài) SQL 查詢 -->
<select id="selectUsers" resultType="User">
  SELECT * FROM users
  <where>
    <if test="id != null">
      AND id = #{id}
    </if>
    <if test="username != null and username != ''">
      AND username = #{username}
    </if>
    <if test="email != null and email != ''">
      AND email = #{email}
    </if>
  </where>
</select>

<where> 標(biāo)簽用于將動態(tài)生成的條件組合到 WHERE 子句中。

<if> 標(biāo)簽根據(jù)條件的存在與否來動態(tài)生成查詢條件。

上面的方法可以根據(jù)id、username、email進(jìn)行條件查詢,當(dāng)test后面的語句為true的時候,會將if標(biāo)簽內(nèi)的語句拼接。

2. 動態(tài)更新語句

假設(shè)我們想根據(jù)不同的條件更新用戶信息。

<!-- 在 Mapper XML 文件中編寫動態(tài) SQL 更新 -->
<update id="updateUser" parameterType="User">
  UPDATE users
  <set>
    <if test="username != null">
      username = #{username},
    </if>
    <if test="email != null">
      email = #{email},
    </if>
  </set>
  WHERE id = #{id}
</update>

<set> 標(biāo)簽用于指定要更新的字段。

<if> 標(biāo)簽根據(jù)條件動態(tài)設(shè)置要更新的字段。

3. 動態(tài)插入語句

如果要根據(jù)不同情況插入不同的字段,也可以使用動態(tài) SQL。

<!-- 在 Mapper XML 文件中編寫動態(tài) SQL 插入 -->
<insert id="insertUser" parameterType="User">
  INSERT INTO users
  <trim prefix="(" suffix=")" suffixOverrides=",">
    <if test="id != null">
      id,
    </if>
    <if test="username != null and username != ''">
      username,
    </if>
    <if test="email != null and email != ''">
      email,
    </if>
  </trim>
  <trim prefix="VALUES (" suffix=")" suffixOverrides=",">
    <if test="id != null">
      #{id},
    </if>
    <if test="username != null and username != ''">
      #{username},
    </if>
    <if test="email != null and email != ''">
      #{email},
    </if>
  </trim>
</insert>

<trim> 標(biāo)簽用于動態(tài)設(shè)置插入的字段和對應(yīng)的值,當(dāng)trim標(biāo)簽內(nèi)的內(nèi)容為空時,不會添加前綴。

prefix 和 suffix 屬性用于指定插入語句的前綴和后綴。

suffixOverrides 屬性用于去除最后一個不必要的逗號。

4、其他標(biāo)簽的使用

基礎(chǔ)的語法使用如下所示。choose、when、otherwise 有點像if-else if -else的感覺

<!-- 使用 choose、when、otherwise 標(biāo)簽實現(xiàn)條件選擇 -->
<select id="getUserByIdOrUsername" resultType="User">
    SELECT * FROM users
    <where>
        <choose>
            <when test="id != null">
                AND id = #{id}
            </when>
            <when test="username != null and username != ''">
                AND username = #{username}
            </when>
            <otherwise>
                AND 1=1
            </otherwise>
        </choose>
    </where>
</select>
???????
<!-- 使用 foreach 標(biāo)簽進(jìn)行遍歷操作 -->
<select id="getUsersByIdList" resultType="User">
    SELECT * FROM users
    WHERE id IN
    <foreach collection="ids" item="id" open="(" separator="," close=")">
        #{id}
    </foreach>
</select>

到此這篇關(guān)于Mybatis使用XML實現(xiàn)動態(tài)sql的示例代碼的文章就介紹到這了,更多相關(guān)Mybatis動態(tài)sql內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 關(guān)于SpringCloud的微服務(wù)以及組件詳解

    關(guān)于SpringCloud的微服務(wù)以及組件詳解

    這篇文章主要介紹了關(guān)于SpringCloud的微服務(wù)以及組件詳解,是一個更高層次的、 架構(gòu)視角的綜合性大型項目, 他的目標(biāo)是構(gòu)建一套標(biāo)準(zhǔn)化的微服務(wù)解決方案,需要的朋友可以參考下
    2023-05-05
  • Spring Cloud Nacos配置管理方案

    Spring Cloud Nacos配置管理方案

    Nacos是SpringCloud中用于服務(wù)注冊與發(fā)現(xiàn)和配置管理的組件,提供多種健康檢查機(jī)制和歷史版本管理,Nacos支持單機(jī)、集群和多集群模式,通過OpenAPI和多種語言客戶端進(jìn)行接入,感興趣的朋友一起看看吧
    2025-01-01
  • SpringMVC中Controller層獲取前端請求參數(shù)的方式匯總

    SpringMVC中Controller層獲取前端請求參數(shù)的方式匯總

    這篇文章主要介紹了SpringMVC中Controller層獲取前端請求參數(shù)的幾種方式,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-08-08
  • Java設(shè)計模式之組合模式的示例詳解

    Java設(shè)計模式之組合模式的示例詳解

    組合模式,又叫部分整體模式,它創(chuàng)建了對象組的數(shù)據(jù)結(jié)構(gòu)組合模式使得用戶對單個對象和組合對象的訪問具有一致性。本文將通過示例為大家詳細(xì)介紹一下組合模式,需要的可以參考一下
    2022-03-03
  • SpringBoot+MQTT+apollo實現(xiàn)訂閱發(fā)布功能的示例

    SpringBoot+MQTT+apollo實現(xiàn)訂閱發(fā)布功能的示例

    這篇文章主要介紹了SpringBoot+MQTT+apollo實現(xiàn)訂閱發(fā)布功能的示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • shell腳本運行java程序jar的方法

    shell腳本運行java程序jar的方法

    本篇文章主要介紹了shell腳本運行java程序jar的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • Java調(diào)用微信客服消息實現(xiàn)發(fā)貨通知的方法詳解

    Java調(diào)用微信客服消息實現(xiàn)發(fā)貨通知的方法詳解

    這篇文章主要介紹了Java調(diào)用微信客服消息實現(xiàn)發(fā)貨通知的方法,結(jié)合實例形式詳細(xì)分析了java針對微信接口調(diào)用的原理、調(diào)用方法與相關(guān)注意事項,需要的朋友可以參考下
    2017-08-08
  • spring動態(tài)注冊bean?AOP失效原理解析

    spring動態(tài)注冊bean?AOP失效原理解析

    這篇文章主要為大家介紹了spring動態(tài)注冊bean使AOP失效原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • java中Class.getMethods()和Class.getDeclaredMethods()方法的區(qū)別

    java中Class.getMethods()和Class.getDeclaredMethods()方法的區(qū)別

    這篇文章主要介紹了java中Class.getMethods()和Class.getDeclaredMethods()方法的區(qū)別 ,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-09-09
  • Springboot項目通過redis實現(xiàn)接口的冪等性

    Springboot項目通過redis實現(xiàn)接口的冪等性

    這篇文章主要為大家介紹了Springboot項目通過redis實現(xiàn)接口的冪等性,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12

最新評論

宁陕县| 台北县| 冀州市| 承德县| 新干县| 德清县| 克东县| 托克托县| 莒南县| 明水县| 偃师市| 通化市| 邯郸市| 内黄县| 永城市| 罗源县| 顺义区| 江北区| 南昌市| 弥勒县| 新建县| 姚安县| 乌拉特中旗| 正镶白旗| 万山特区| 鹤峰县| 和田县| 武川县| 泰和县| 鸡西市| 滕州市| 宝兴县| 宁强县| 苗栗市| 柘荣县| 浦城县| 修水县| 山东省| 舞钢市| 荣成市| 阿拉善盟|