九觉既、MyBatis動(dòng)態(tài)SQL

image.png

@[toc]

九昂羡、動(dòng)態(tài)SQL

9.1 if

總結(jié):根據(jù)標(biāo)簽中test屬性所對(duì)應(yīng)的表達(dá)式?jīng)Q定標(biāo)簽中的內(nèi)容是否需要拼接到SQL中待笑。

User getUserByParamsWithIf(User user);
<select id="getUserByParamsWithIf" resultType="User">
        select * from litemall_user where 1=1
        <if test="username != '' and username != null">
            and username = #{username}
        </if>
        <if test="id != 0 and id != null">
            and id = #{id}
        </if>
    </select>

9.2 where

總結(jié)

  • 當(dāng)where標(biāo)簽中有內(nèi)容時(shí)鸣皂,會(huì)自動(dòng)生成where關(guān)鍵字,并且將內(nèi)容前多余的and或or去掉暮蹂。
  • 當(dāng)where標(biāo)簽中沒有內(nèi)容時(shí)寞缝,此時(shí)where標(biāo)簽沒有任何效果。
  • 注意:where標(biāo)簽不能將其中內(nèi)容后面多余的and或or去掉仰泻。
User getUserByParamsWithWhere(User user);
<select id="getUserByParamsWithWhere" resultType="User">
        select * from litemall_user
        <where>
            <if test="username != '' and username != null">
                and username = #{username}
            </if>
            <if test="id != 0 and id != null">
                and id = #{id}
            </if>
        </where>
    </select>

9.3 trim

總結(jié):trim用于去掉或添加標(biāo)簽中的內(nèi)容

常用屬性

  • prefix:在trim標(biāo)簽中的內(nèi)容的前面添加某些內(nèi)容

  • prefixOverrides:在trim標(biāo)簽中的內(nèi)容的前面去掉某些內(nèi)容

  • suffix:在trim標(biāo)簽中的內(nèi)容的后面添加某些內(nèi)容

  • suffixOverrides:在trim標(biāo)簽中的內(nèi)容的后面去掉某些內(nèi)容

User getUserByParamsWithTrim(User user);
<select id="getUserByParamsWithTrim" resultType="User">
        select * from litemall_user
        <trim prefix="where" suffixOverrides="and">
            <if test="username != '' and username != null">
                 username = #{username} and
            </if>
            <if test="gender != 0 and gender != null">
                 gender = #{gender} and
            </if>
            <if test="id != 0 and id != null">
                id = #{id} and
            </if>
        </trim>
    </select>

9.4 choose第租、when、otherwise

總結(jié):相當(dāng)于if..else if ..else 我纪,其中when至少要有一個(gè),otherwise最多只能有一個(gè)。

List<User> getUserByParamsWithChoose(User user);
<select id="getUserByParamsWithChoose" resultType="User">
        select * from litemall_user
        <where>
            <choose>
                <when test="username != '' and username != null">
                    username = #{username}
                </when>
                <when test="gender != 0 and gender != null">
                    gender = #{gender}
                </when>
                <when test="id != 0 and id != null">
                    id = #{id}
                </when>
            </choose>
        </where>
    </select>

9.5 foreach

總結(jié):屬性:

  • collection:設(shè)置要循環(huán)的數(shù)組或集合

  • item:表示集合或數(shù)組中的每一個(gè)數(shù)據(jù)

  • separator:設(shè)置循環(huán)體之間的分隔符

  • open:設(shè)置foreach標(biāo)簽中的內(nèi)容的開始符

  • close:設(shè)置foreach標(biāo)簽中的內(nèi)容的結(jié)束符

9.6 SQL片段

總結(jié):sql片段浅悉,可以記錄一段公共sql片段趟据,在使用的地方通過include標(biāo)簽進(jìn)行引入。

User getUserByParamsWithSQLFragment();
<sql id="userColumns">
        id, username, password, mobile, gender, last_login_ip
</sql>
<select id="getUserByParamsWithSQLFragment" resultType="User">
        select <include refid="userColumns"></include> from litemall_user where id = 4
</select>

本人其他相關(guān)文章鏈接

1.一术健、MyBatis簡介:MyBatis歷史汹碱、MyBatis特性、和其它持久化層技術(shù)對(duì)比荞估、Mybatis下載依賴包流程
2.二咳促、搭建MyBatis采用xml方式,驗(yàn)證CRUD(增刪改查操作)
3.三勘伺、MyBatis核心配置文件詳解
4.四跪腹、MyBatis獲取參數(shù)值的兩種方式(重點(diǎn))
5.五、MyBatis的增刪改查模板(參數(shù)形式包括:String飞醉、對(duì)象冲茸、集合、數(shù)組缅帘、Map)
6.六轴术、MyBatis特殊的SQL:模糊查詢、動(dòng)態(tài)設(shè)置表名钦无、校驗(yàn)名稱唯一性
7.七逗栽、MyBatis自定義映射resultMap
8.八、(了解即可)MyBatis懶加載(或者叫延遲加載)
9.九失暂、MyBatis動(dòng)態(tài)SQL
10.十彼宠、MyBatis的緩存
11.十一、MyBatis的逆向工程
12.十二趣席、MyBatis分頁插件

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末兵志,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子宣肚,更是在濱河造成了極大的恐慌想罕,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件霉涨,死亡現(xiàn)場離奇詭異按价,居然都是意外死亡,警方通過查閱死者的電腦和手機(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
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(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)容