一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務(wù)器之家 - 編程語(yǔ)言 - JAVA教程 - MyBatis 動(dòng)態(tài)拼接Sql字符串的問(wèn)題

MyBatis 動(dòng)態(tài)拼接Sql字符串的問(wèn)題

2020-06-05 14:52java教程網(wǎng) JAVA教程

MyBatis的動(dòng)態(tài)SQL,解決了SQL字符串拼接的痛苦。下文分步驟給大家詳細(xì)介紹了MyBatis 動(dòng)態(tài)拼接Sql字符串的問(wèn)題,非常不錯(cuò),感興趣的朋友一起看下吧

MyBatis 的一個(gè)強(qiáng)大的特性之一通常是它的動(dòng)態(tài) SQL 能力。如果你有使用 JDBC 或其他 相似框架的經(jīng)驗(yàn),你就明白條件地串聯(lián) SQL 字符串在一起是多么的痛苦,確保不能忘了空格或在列表的最后省略逗號(hào)。動(dòng)態(tài) SQL 可以徹底處理這種痛苦。

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

MyBatis的動(dòng)態(tài)SQL,解決了SQL字符串拼接的痛苦。

1.if

?
1
2
3
4
5
6
7
8
<select id="findActiveBlogWithTitleLike"
parameterType="Blog" resultType="Blog">
SELECT * FROM BLOG
WHERE state = 'ACTIVE'
<if test="title != null">
AND title like #{title}
</if>
</select>

這條一句會(huì)提供一個(gè)可選的文本查找功能。如果沒(méi)有傳遞title,那么所有激活的博客都會(huì)被返回。
如果傳遞了title,那么就會(huì)查找相近的title。

2.choose,when,otherwise

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<select id="findActiveBlogLike"
parameterType="BLOG" resultType="BLOG">
SELECT * FROM BLOG
WHERE
<choose>
<when test="title != null">
AND title like #{title}
</when>
<when test="author != null and author.name != null">
AND title like #{author.name}
</when>
<otherwise>
AND featured = 1
</otherwise>
</choose>
</select>

注:如果上述條件都沒(méi)有匹配,則會(huì)變成SELECT * FROM BLOG WHERE
如果僅有第二個(gè)匹配,則會(huì)變成SELECT * FROM BLOG WHERE AND title LIKE somelike
顯然這樣會(huì)查詢失敗。要解決這個(gè)問(wèn)題,mybatis提供了解決方法。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<select id="findActiveBlogLike"
parameterType="BLOG" resultType="BLOG">
SELECT * FROM BLOG
WHERE
<trim prefix="WHERE" prefixOverrides="AND |OR ">
<choose>
<when test="title != null">
AND title like #{title}
</when>
<when test="author != null and author.name != null">
AND title like #{author.name}
</when>
<otherwise>
AND featured = 1
</otherwise>
</choose>
</trim>
</select>

overrides屬性采用管道文本分隔符來(lái)覆蓋,這里的空白是重要的。它的結(jié)果就是移除在InnerText中overrides中指定的內(nèi)容。

3.set

?
1
2
3
4
5
6
7
8
9
10
<update id="updateAuthorIfNecessary"
parameterType="Author">
update Author
<set>
<if test="username != null">username=#{username},</if>
<if test="password != null">password=#{password},</if>
<if test="email != null">email=#{email}</if>
</set>
where id=#{id}
</update>

同上的問(wèn)題,優(yōu)化后:

?
1
2
3
4
5
6
7
8
9
10
11
12
<update id="updateAuthorIfNecessary"
parameterType="Author">
update Author
<trim prefix="where" prefixOverrides=",">
<set>
<if test="username != null">username=#{username},</if>
<if test="password != null">password=#{password},</if>
<if test="email != null">email=#{email}</if>
</set>
where id=#{id}
</trim>
</update>

以上所述是小編給大家介紹的MyBatis 動(dòng)態(tài)拼接Sql字符串的問(wèn)題,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)服務(wù)器之家網(wǎng)站的支持!

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 九九精品视频在线观看 | 天天干天天爽天天操 | 娇喘嗯嗯 轻点啊视频福利 九九九九在线精品免费视频 | 国产欧美另类久久精品91 | 丁香婷婷在线视频 | gay18高中生白袜xnxx动漫 | 精品国产一区二区三区在线 | 日韩日b视频 | 手机av影院 | 操美女骚b | 日韩国产成人 | 亚洲精品午夜在线观看 | 色老板在线视频观看 | 3d动漫h在线观看网站蜜芽 | 女人把扒开给男人爽 | www.青青草原| 日韩理论片在线看免费观看 | 日韩一级片在线免费观看 | 强迫高h | 国产福利视频一区二区微拍 | 白鹿扒开内裤露出尿孔 | 隔壁老王国产在线精品 | 福利视频一区青娱 | 97自拍视频在线观看 | 黄动漫车车好快的车车双女主 | 91原创国产 | 秋霞一级毛片 | 色视频综合 | 亚洲成a人片777777久久 | 亚洲香蕉伊在人在线观看9 亚洲系列国产系列 | 扒开大腿狠狠挺进视频 | 免费观看视频在线播放 | 驯服有夫之妇HD中字日本 | 乌克兰13一14娇小 | 久久国产乱子伦免费精品 | 亚洲国产欧美在线人网站 | 国内视频一区二区三区 | 亚洲国产综合自在线另类 | jk制服蕾丝超短裙流白浆 | 成熟女人50岁一级毛片不卡 | 91私密保健女子养生spa |