日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

8 MyBatis动态SQL

發布時間:2024/10/8 数据库 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 8 MyBatis动态SQL 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

if標簽:

<if>用法類似Java中的if語句,選擇性拼接指定SQL片段.

補充:

  • ?? ?在test條件中使用動態SQL中傳遞參數要放在實體對象中,不然會報錯找不到對象
  • ?? ?如果不放在實體對象中傳輸,就在test對比中使用_parameter或者value
  • ?? ?_parameter,value代表傳進來的參數,如果傳進來的參數是多個,那個_parameter代表get(0)第一個
  • ?? ?
    格式:

    ?? ?<if test="條件">SQL片段</if>


    說明:

  • ?? ?當條件為true時,將SQL片段拼接到該標簽所在位置

  • <choose>,<when>,<otherwise>

    用法類似Java的if else if 語句,用于多次判斷,選擇性拼接指定SQL片段.
    格式:

    ?? ?<choose><when test="條件1">SQL片段1</when><when test="條件2">SQL片段2</when>...<otherwise>默認SQL片段</otherwise></choose>


    說明:

  • ?? ?<choose>,<when>,<otherwise>不能單獨使用,必須混合使用.
  • ?? ?<choose>中可以含有N個<when>,0或1個<otherwise>

  • <forEach>標簽:

    用于遍歷集合,通常用于構建in語句中.


    格式:

    ?? ?<select id="業務匿名" resultType="結果類型[類全名]" >select 字段列 from 表名 where 字段名 in<foreach collection="集合" item="變量A" index="變量B" open="" ?? ?separator="" close="">#{變量A}</foreach></select>


    說明:

  • ?? ?collection屬性值為集合類型的屬性名.
  • ?? ?item屬性值為變量名,名稱任意.該變量存放當前元素/鍵值
  • ?? ?index屬性值為變量名,名稱任意.該變量存放當前元素索引/鍵名
  • ?? ?open,separator,close屬性值為符號,表示遍歷開始/中間/結束時拼接的符號
  • <!--測試<forEach: 測試age為20,21,22,23,24,25--><select id="dynacSQL3" resultType="user" parameterType="java.util.List" >select * from user where age in<foreach collection="list" item="ageval" open="(" separator="," close=")">#{ageval}</foreach></select><!--測試<forEach: 測試age為20,21,22,23,24,25--><select id="dynacSQL3" resultType="user" parameterType="java.util.ArrayList" >select * from user where age in<foreach collection="array" item="ageval" open="(" separator="," close=")">#{ageval}</foreach></select>


    where標簽:

    要求:
    ? ? <where>需要與<if>,<choose>,<when>,<otherwise>等配合使用
    作用:
    ? ? a.當至少有1個子標簽的條件為true時,<where>生成1個"where"關鍵字.
    ? ? b.若where后緊挨"AND/OR"時[where ?and 條件],<where>自動去除.
    格式:
    ?

    ?? ?<where>其他動態SQL標簽</where>


    說明:
    ?? ?1.<where>標簽中編寫<if>,<choose>,<when>,<otherwise>,<forEach>等標簽

    set標簽:

    <set>用于修改命令中,能夠動態前置"set"關鍵字,同時可以刪除多余的逗號.
    ?

    格式:

    ?? ?<update id="業務匿名" resultType="int">update 表名<set>其他動態SQL標簽或SQL片段</set></update>


    說明:

  • ?? ?<set>標簽中編寫<if>,<choose>,<when>,<otherwise>等標簽

  • <sql>在業務標簽外,定義一個SQL片段,在其他業務標簽中可以通過<include>引用該SQL片段.
    格式:

    ?? ?<sql id="SQL片段匿名">SQL片段</sql>

    說明:

  • ?? ?SQL片段內容可以是SQL語句的任何部分.
  • ?? ?<sql>標簽對之間可以嵌套動態SQL標簽,產生更加方便的SQL片段
  • ?? ?當需要引用SQL片段時,編寫<include refid="SQL片段匿名">即可引用.
  • 總結

    以上是生活随笔為你收集整理的8 MyBatis动态SQL的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。