6.Mybatis中的动态Sql和Sql片段(Mybatis的一个核心)
視頻地址:http://edu.51cto.com/sd/be679
動態Sql是Mybatis的核心,就是對我們的sql語句進行靈活的操作,他可以通過表達式,對sql語句進行判斷,然后對其進行靈活的拼接和組裝。可以簡單的說成Mybatis中可以動態去的判斷需不需要某些東西。
動態Sql主要有以下類型:
if
choose,when,otherwise
trim,where,set
foreach
這里主要介紹幾個常見的where ?if ?foreach,直接貼代碼了
1.where 這里的where有一個好處就是在拼接成功的時候,會自動去掉第一個and
2.if 這里的if和java基礎中的if用法是一樣,在這里的用法就是當條件成立的時候,就會把sql語句拼接上去,不成立的時候就會把if里面的sql語句忽略
3.if可以重復并且嵌套使用
4.這里的student.name是包裝類的寫法
foreach的用法:把sid在4,5,6,7中的學生找出來 SELECT * FROM t_student WHERE sid in (4,5,6,7);
<!-- 測試foreach代碼 --> <sql id="forEache"><if test="sid_s!=null"><!-- collection:指定你輸入的集合的屬性item:每次遍歷的對象名(別名)open:開始遍歷的時候拼接的字符串close:結束遍歷的時候要拼接的字符串separator:遍歷的對象中間要拼接的字符串SELECT * FROM t_student WHERE sid in (4,5,6,7);--><foreach collection="sid_s" item="sid" open="and sid in (" close=")" separator=",">#{sid}</foreach></if> </sql>Sql片段:(提高配置文件中Sql代碼的重用性)
Sql片段的寫法:
<!-- id:這個是唯一標識sql代碼片段經驗 : 基于單表寫的sql代碼重用性比較高】: 就是在sql代碼里不要出現where--> <sql id="query_list"><if test="student!=null and student!=''"><if test="student.name!=null and student.name!=''">and name=#{student.name}</if><if test="student.sex!=null and student.sex!=''">and sex=#{student.sex}</if> </if> </sql>Sql片段的引用:(可以引用其他配置文件的sql片段:命名空間.sql片段的Id)
<!-- 拼接成功的時候,這個where會自動去掉第一個 and --><where><include refid="query_list"></include> </where>轉載于:https://www.cnblogs.com/huaixiaoz/p/5795836.html
總結
以上是生活随笔為你收集整理的6.Mybatis中的动态Sql和Sql片段(Mybatis的一个核心)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++基础知识之vector
- 下一篇: 奔小康赚大钱 hdu 2255( KM