MyBatis CRUD 常用動(dòng)態(tài) SQL 標(biāo)簽整理
本文整理了 MyBatis 中進(jìn)行 CRUD 操作時(shí)常用的動(dòng)態(tài) SQL 標(biāo)簽及其使用方式,適合初學(xué)者查閱和實(shí)踐。
1.<if>:條件判斷
用于在滿足條件時(shí)拼接 SQL 片段。
<select id="selectUser" parameterType="map" resultType="User">
SELECT * FROM user
<where>
<if test="name != null and name != ''">
name = #{name}
</if>
<if test="age != null">
AND age = #{age}
</if>
</where>
</select>
test是唯一屬性,使用 OGNL 表達(dá)式判斷變量是否存在或滿足條件。
2.<choose> / <when> / <otherwise>:類似 switch-case
用于多分支選擇。
<select id="getUser" parameterType="map" resultType="User">
SELECT * FROM user
<where>
<choose>
<when test="id != null">
id = #{id}
</when>
<when test="name != null">
name = #{name}
</when>
<otherwise>
1 = 1
</otherwise>
</choose>
</where>
</select>
3.<where>:自動(dòng)處理WHERE和AND
自動(dòng)去掉首個(gè) AND 或 OR,并在需要時(shí)自動(dòng)加上 WHERE。
<where>
<if test="name != null">name = #{name}</if>
<if test="age != null">AND age = #{age}</if>
</where>
4.<set>:用于UPDATE自動(dòng)拼接字段
會(huì)自動(dòng)去除最后一個(gè)逗號(hào),并加上 SET。
<update id="updateUser" parameterType="User">
UPDATE user
<set>
<if test="name != null">name = #{name},</if>
<if test="age != null">age = #{age},</if>
</set>
WHERE id = #{id}
</update>
5.<foreach>:用于批量操作(插入、刪除、IN)
批量插入:
<insert id="batchInsert" parameterType="list">
INSERT INTO user (name, age) VALUES
<foreach collection="list" item="user" separator=",">
(#{user.name}, #{user.age})
</foreach>
</insert>
IN查詢:
<select id="selectByIds" parameterType="list" resultType="User">
SELECT * FROM user WHERE id IN
<foreach collection="list" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</select>
6.<trim>:自定義修剪邏輯(替代<set>/<where>)
用于去除開頭或結(jié)尾的多余 SQL 關(guān)鍵詞。
<update id="updateUser" parameterType="User">
UPDATE user
<trim prefix="SET" suffixOverrides=",">
<if test="name != null">name = #{name},</if>
<if test="age != null">age = #{age},</if>
</trim>
WHERE id = #{id}
</update>
到此這篇關(guān)于MyBatis CRUD 常用動(dòng)態(tài) SQL 標(biāo)簽整理的文章就介紹到這了,更多相關(guān)MyBatis CRUD 動(dòng)態(tài) SQL 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java?線程池狀態(tài)及狀態(tài)轉(zhuǎn)換
這篇文章主要介紹了java?線程池狀態(tài)及狀態(tài)轉(zhuǎn)換,Java里線程池的狀態(tài)和線程的狀態(tài)是完全不同的,具體有幾種狀態(tài)和哪些不同點(diǎn),下面文章詳細(xì)介紹,需要的小伙伴可以參考一下2022-05-05
java.lang.UnsatisfiedLinkError: %1 不是有效的Win32應(yīng)用程序錯(cuò)誤解決
這篇文章主要給大家介紹了關(guān)于java.lang.UnsatisfiedLinkError: %1 不是有效的Win32應(yīng)用程序錯(cuò)誤的解決方法,文中介紹的非常詳細(xì),需要的朋友們可以參考學(xué)習(xí),下面來一起看看吧。2017-03-03
Java中new Date().getTime()時(shí)間戳使用詳解
文章解釋了Java和JavaScript中Date對(duì)象的`getTime()`方法返回的是從特定時(shí)區(qū)(1.UTC)起至當(dāng)前時(shí)間的總毫秒數(shù),強(qiáng)調(diào)與程序?qū)嶋H運(yùn)行的時(shí)區(qū)無關(guān),都是從UTC時(shí)間起計(jì)算,強(qiáng)調(diào)文章最后強(qiáng)調(diào)了個(gè)人觀點(diǎn),并鼓勵(lì)大家多多支持腳本之家2026-04-04
SpringBoot對(duì)敏感數(shù)據(jù)進(jìn)行脫敏的全過程
在項(xiàng)目開發(fā)中,數(shù)據(jù)庫經(jīng)常會(huì)存儲(chǔ)大量用戶敏感信息,例如手機(jī)號(hào)、身份證號(hào)、郵箱、銀行卡號(hào)、家庭地址、姓名等數(shù)據(jù),如果后端直接把原始數(shù)據(jù)返回給前端,會(huì)造成嚴(yán)重的用戶隱私泄露問題,所以本文給大家介紹了SpringBoot對(duì)敏感數(shù)據(jù)進(jìn)行脫敏的全過程,需要的朋友可以參考下2026-04-04
spring?IOC容器的Bean管理XML自動(dòng)裝配過程
這篇文章主要為大家介紹了spring?IOC容器Bean管理基于XML的自動(dòng)裝配過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
springboot Mongodb的集成與使用實(shí)例詳解
這篇文章主要介紹了springboot Mongodb的集成與使用實(shí)例詳解,需要的朋友可以參考下2018-04-04
hibernate 配置數(shù)據(jù)庫方言的實(shí)現(xiàn)方法
這篇文章主要介紹了hibernate 配置數(shù)據(jù)庫方言的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05
Java異常簡(jiǎn)介和架構(gòu)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要分享了Java異常簡(jiǎn)介和架構(gòu),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06
MyBatis 中 ${}和 #{}的正確使用方法(千萬不要亂用)
這篇文章主要介紹了MyBatis 中 ${}和 #{}的正確使用方法,本文給大家提到了MyBatis 中 ${}和 #{}的區(qū)別,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07

