MyBatis5-動(dòng)態(tài) SQL

動(dòng)態(tài) SQL

什么是動(dòng)態(tài) SQL

就是動(dòng)態(tài)的對(duì) SQL 進(jìn)行組裝 拼接.

<if>

    <select id="findById" resultType="String" parameterType="User">
        select userName from user
        <where>
            <if test="id != null || id != 0">
                userId = #{id}
            </if>
        </where>
    </select>

<where>: 可以自動(dòng)去掉條件中的第一個(gè) and
注:<if>中的 test 屬性是 User 對(duì)象中的屬性名,而且這里寫的是java代碼,而不是 SQL 語句(is not null).

<set>

類似的用于動(dòng)態(tài)更新語句的解決方案叫做 set形娇。set 元素可以被用于動(dòng)態(tài)包含需要更新的列亮垫,而舍去其他的甘邀。比如:

<update id="updateAuthorIfNecessary">
  update Author
    <set>
      <if test="username != null">username=#{username},</if>
      <if test="password != null">password=#{password},</if>
      <if test="email != null">email=#{email},</if>
      <if test="bio != null">bio=#{bio}</if>
    </set>
  where id=#{id}
</update>

知識(shí)拓展

綜合查詢

當(dāng)我們查詢的時(shí)候需要用到很多的查詢條件,例如用戶信息綜合查詢,查詢條件可能包括用戶信息,商品 訂單的.
比如我們可以查詢某用戶買了哪些商品,還可以查詢某些商品被哪些用戶買了.

針對(duì)這些復(fù)雜的查詢我們可以定義一個(gè)包裝類userQueryVoVo指的是視圖對(duì)象.

public class UserQueryVo {
    //此類可以包含User對(duì)象
    public User user;
    
    //或者商品  訂單對(duì)象等
}

SQL 語句重用

    <sql id="id">

    </sql>
    <select id="find">
        <include refid="id"></include>
    </select>

當(dāng)多條查詢語句的where條件相同時(shí),我們可以使用此方法.
<sql>: id 屬性是sql重用代碼 的唯一標(biāo)識(shí)
<include>: refid 屬性引用SQL重用代碼的標(biāo)識(shí),如果不在同一個(gè)mapper映射文件中,這需要添加namespace.
注:
1.基于表單定義SQL重用代碼,提高代碼重用性.
2.在SQL重用代碼,不要包含where,因?yàn)橛锌赡苣愕倪@條SQL重用代碼,會(huì)包含在一個(gè)where中.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末葵腹,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子银觅,更是在濱河造成了極大的恐慌礼饱,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件究驴,死亡現(xiàn)場(chǎng)離奇詭異镊绪,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)洒忧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門蝴韭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人跑慕,你說我怎么就攤上這事万皿〈菡遥” “怎么了核行?”我有些...
    開封第一講書人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵牢硅,是天一觀的道長。 經(jīng)常有香客問我芝雪,道長减余,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任惩系,我火速辦了婚禮位岔,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘堡牡。我一直安慰自己抒抬,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開白布晤柄。 她就那樣靜靜地躺著擦剑,像睡著了一般。 火紅的嫁衣襯著肌膚如雪芥颈。 梳的紋絲不亂的頭發(fā)上惠勒,一...
    開封第一講書人閱讀 52,457評(píng)論 1 311
  • 那天,我揣著相機(jī)與錄音爬坑,去河邊找鬼纠屋。 笑死,一個(gè)胖子當(dāng)著我的面吹牛盾计,可吹牛的內(nèi)容都是我干的售担。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼署辉,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼灼舍!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起涨薪,我...
    開封第一講書人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤骑素,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后刚夺,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體献丑,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年侠姑,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了创橄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡莽红,死狀恐怖妥畏,靈堂內(nèi)的尸體忽然破棺而出邦邦,到底是詐尸還是另有隱情,我是刑警寧澤醉蚁,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布燃辖,位于F島的核電站,受9級(jí)特大地震影響网棍,放射性物質(zhì)發(fā)生泄漏黔龟。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一滥玷、第九天 我趴在偏房一處隱蔽的房頂上張望氏身。 院中可真熱鬧,春花似錦惑畴、人聲如沸蛋欣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽陷虎。三九已至,卻和暖如春倒得,著一層夾襖步出監(jiān)牢的瞬間泻红,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來泰國打工霞掺, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留谊路,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓菩彬,卻偏偏與公主長得像缠劝,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子骗灶,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

推薦閱讀更多精彩內(nèi)容

  • 1. 簡介 1.1 什么是 MyBatis 惨恭? MyBatis 是支持定制化 SQL、存儲(chǔ)過程以及高級(jí)映射的優(yōu)秀的...
    笨鳥慢飛閱讀 5,527評(píng)論 0 4
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法耙旦,類相關(guān)的語法脱羡,內(nèi)部類的語法,繼承相關(guān)的語法免都,異常的語法锉罐,線程的語...
    子非魚_t_閱讀 31,664評(píng)論 18 399
  • Spark SQL, DataFrames and Datasets Guide Overview SQL Dat...
    草里有只羊閱讀 18,335評(píng)論 0 85
  • 《踏莎行·橘洲東眺》 色漸行脓规, 余夏將盡, 殘荷飄萍風(fēng)搖曳险领。 雨后撲蝶小童忙侨舆, 亂入迷蒙輕呤笑秒紧。 層巒疊嶂, 流光...
    93f1bf1c7d4f閱讀 455評(píng)論 0 1
  • 頭都想炸了挨下,今天一早就在想要寫什么內(nèi)容熔恢,就在想要交作業(yè)。但是我想不出來复颈,困擾我的事情太多绩聘。 早上九點(diǎn)就要去上班沥割,上...
    小藍(lán)兒閱讀 189評(píng)論 0 0