激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Mybatis動態SQL的示例代碼

Mybatis動態SQL的示例代碼

2022-03-03 00:54shuati2000 Java教程

本文主要介紹了Mybatis動態SQL的示例代碼,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

什么是動態SQL:動態SQL就是根據不同的條件生成不同的SQL語句

基本流程

1,數據庫準備一張表
2,導包
3,編寫核心配置文件
4,編寫實體類
5,編寫實體類對應的Mapper和Mapper.xml文件
6,在核心配置文件中注冊Mapper.xml
7,測試

開啟自動駝峰命名規則映射

?
1
2
<!--開啟駝峰命名映射-->
<setting name="mapUnderscoreToCamelCase" value="true"/>

即在數據庫中為create_time對應Java實體類屬性createTime

IF,Where

?
1
2
3
4
5
6
7
8
9
10
11
<select id="queryListIf" parameterType="map" resultType="Blog">
    select * from blog
    <where>
        <if test="title != null">
         title = #{title}
     </if>
     <if test="author != null">
         and author = #{author}
     </if>
    </where>
  </select>

Where的作用:當至少有一個滿足條件時添加Where,且會判斷后面加的第一條語句,若是and開頭,則會自動將這個and刪除
本質上還是在拼接SQL,上述當沒有滿足條件時查詢blog表中的所有,當滿足條件時,則拼接SQL

Set

?
1
2
3
4
5
6
7
8
9
10
11
12
<update id="updateBlog" parameterType="map">
       update blog
       <set>
           <if test="title != null">
               title = #{title},
           </if>
           <if test="author != null">
               author = #{author}
           </if>
       </set>
       where id = #{id}
   </update>

Set的作用:至少有一個滿足條件時添加Set,且會判斷后面加的最后的語句,若是",“結尾,則會自動將這個”,"刪除

Choose(when,otherwise)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<select id="queryNoLimit" parameterType="map" resultType="Blog">
    select * from blog
    <where>
        <choose>
            <when test="title != null">
                title = #{title}
            </when>
            <when test="author != null">
                and author = #{author}
            </when>
            <otherwise>
                and `view` = #{view}
            </otherwise>
        </choose>
    </where>
</select>

choose(when,otherwise)類似與Java中的switch(case,default),choose進入選擇,when當什么什么時,進行條件判斷,若滿足條件,則執行條件中的內容,后面的when,otherwise將不再執行,otherwise當所有when都不滿足條件時執行

ForEach

?
1
2
3
4
5
6
7
8
<select id="queryBlogById" parameterType="map" resultType="blog">
    select * from blog
    <where>
        <foreach collection="ids" item="id" open="(" close=")" separator="or">
            id = #{id}
        </foreach>
    </where>
</select>

上述為,一個集合ids存儲id的內容,根據這個集合查詢所包含的id,open為開始,close為結束,separator為分隔符
才用map.put(“ids”,list)的方式導入集合

建議:現在Mysql中寫出完整的sql,再對應的去修改即可

SQL片段

將一些功能的部分抽取出來方便復用

使用SQL標簽抽取公共的部分

?
1
2
3
4
5
6
7
8
<sql id="titleAuthor">
    <if test="title != null">
        title = #{title}
    </if>
    <if test="author != null">
        and author = #{author}
    </if>
</sql>

在需要的地方使用include標簽引用即可

?
1
2
3
4
5
6
<select id="queryListIf" parameterType="map" resultType="Blog">
    select * from blog
    <where>
        <include refid="titleAuthor"></include>
    </where>
</select>

注意事項:
1.最好基于單表來定義SQL片段
2.不要存在where標簽

總結

所謂的動態SQL就是在拼接SQL語句,我們只要保證SQL的正確性,按照SQL的格式去排列組合就可以了

到此這篇關于Mybatis動態SQL的示例代碼的文章就介紹到這了,更多相關Mybatis動態SQL內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/shuati2000/article/details/120964434

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产精品av久久久久久无 | 欧美国产成人在线 | 日韩在线观看视频网站 | 国产免费最爽的乱淫视频a 午夜精品久久久久久久99热浪潮 | 日韩av毛片免费观看 | 国产激情精品一区二区三区 | 一区二区三区小视频 | 毛片免费在线观看视频 | 久久久久久久久日本理论电影 | 国产乱一区二区三区视频 | 国产91在线免费 | av噜噜噜噜 | 精品在线观看一区二区 | 欧美一级成人一区二区三区 | 国产欧美精品综合一区 | 综合毛片| 日本在线一区二区 | 亚洲午夜1000理论片aa | 日韩毛片网 | 中文字幕在线播放视频 | 日本最新免费二区三区 | 沉沦的校花奴性郑依婷c到失禁 | 爽成人777777婷婷 | 亚洲国产女同久久 | 中国大陆高清aⅴ毛片 | 国产做爰全免费的视频黑人 | 一级毛片在线视频 | 免费毛片在线 | 免费欧美精品 | 亚洲自拍第二页 | av电影免费观看 | 欧美成人福利 | 日韩视频1 | 成人一级视频 | 久色乳综合思思在线视频 | 国产精品久久国产精品 | 国产精品久久久久久久不卡 | 国产亚洲高清视频 | 一本视频在线观看 | 亚洲成人在线视频网 | 天天草天天干天天射 |