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

服務(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)站的支持!

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日韩一级片免费观看 | 精品国产自在天天线2019 | 黑人巨摘花第一次出血 | 免费国产成人α片 | 成人影院在线观看 | 国产良家 | 97色轮| 99自拍网| 欧美破苞合集 magnet | 国产男人搡女人免费视频 | 欧美最猛性xxxxx69交 | 91香蕉视频在线观看 | 亚洲精品中文 | 女人麻豆国产香蕉久久精品 | 久久伊人在 | 555www成人网 | 国产大片线上免费观看 | 日韩毛片免费在线观看 | 人妖欧美一区二区三区四区 | 国产精品成人免费福利 | 久久综合给合久久狠狠狠… | 日韩a级片视频 | 日韩成人影视 | 性xxx欧美 | 免费国产之a视频 | 星空无限传媒视频在线观看视频 | 特级淫片欧美高清视频蜜桃 | 男女刺激高清视频在线观看 | 国产99在线观看 | 91免费永久国产在线观看 | 亚洲国产成人久久77 | 欧美日韩视频一区三区二区 | 亚洲乱亚洲乱妇41p国产成人 | 女同学高中你下面好紧 | xvideo日本| 精品一区二区三区自拍图片区 | 波多野结在线观看 | 亚洲福利在线观看 | www.四虎网站| 亚洲日本久久一区二区va | 国产精品久久久久久久人人看 |