91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

好程序員Java分享Mybatis必會的動態SQL

發布時間:2020-08-08 21:33:47 來源:ITPUB博客 閱讀:144 作者:好程序員IT 欄目:編程語言

好程序員 Java 分享 Mybatis 必會的動態 SQL 前言

Mybatis 可謂是 java 開發者必須會的一項技能。 MyBatis 的強大特性之一便是它的動態 SQL 。如果你有使用 JDBC 或其它類似框架的經驗,你就能體會到根據不同條件拼接 SQL 語句的痛苦。例如拼接時要確保不能忘記添加必要的空格,還要注意去掉列表最后一個列名的逗號。利用動態 SQL 這一特性可以徹底擺脫這種痛苦。

M ybatis 動態 sql

mybatis 動態SQL,通過 if, choose, when, otherwise, trim, where, set, foreach等標簽,可組合成非常靈活的SQL語句,從而在提高 SQL 語句的準確性的同時,也大大提高了開發人員的效率。本文主要介紹這幾個動態SQL .

具體示例

if標簽 if就是用來對輸入映射的字段進行判斷 一般是非空判斷 null 和""。

1.  <!--  案例 1 :動態 sql if -->   

2.  <select   id = "selectUsersIf"   parameterType = "user"   resultType = "user" >   

3.      select * from users where  1 =1   

4.       <if   test = "uname!=null and uname!=''" >  and uname like "%"#{uname}"%"  </if>    

5.       <if   test = "sex!=null and sex!=''" > and  sex  = #{sex}  </if>    

6.  </select>   

動態 SQL <where /> 相當于 where 關鍵字 <where /> 可以自動處理第一個前 and 或者 or 。 當條件都沒有的時候 where 也不會加上 。

1.  <!--  案例 2 :動態 sql where  可以自動處理第一個前 and  或者 or 。當條件都沒有的時候   where 也不會加上   -->   

2.  <select   id = "selectUsersWhere"   parameterType = "user"   resultType = "user" >   

3.      select * from users   

4.       <where>   

5.       <if   test = "uname!=null and uname!=''" >  and uname like "%"#{uname}"%"  </if>    

6.       <if   test = "sex!=null and sex!=''" > and  sex  = #{sex}  </if>    

7.       </where>  

choose when--when--otherwise when 可以多個 otherwise 只能有一個 類似于 switch case

需求:輸入用戶 id 按照用戶 id 進行精確查找  其他條件不看  沒有輸入   id   用戶名模糊查找 都沒有的話  查詢 id=1 的用戶

1.  <!--  案例 3 :動態 sql choose—when when otherwise -->   

2.    

3.  <select   id = "selectUsersChoose"   parameterType = "user"   resultType = "user" >   

4.      select * from users   

5.       <where>   

6.               <choose>   

7.                   <when   test = "uid!=null" >   uid =#{uid} </when>   

8.                   <when   test = "uname!=null and uname!=''" >  uname like "%"#{uname}"%" </when>   

9.                   <otherwise> uid = 1 </otherwise>   

10.                

11.               </choose>    

12.       </where>   

13.  </select>

動態 sql set 代替 set 關鍵字 set 標簽可以幫助我們去掉最后一個逗號

1.  <update   id = "updateSet"   parameterType = "user" >   

2.      

3.      update users    

4.        

5.     <set>   

6.       <if   test = "uname!=null and uname!=''" >   uname  =#{uname}, </if>   

7.       <if   test = "upwd!=null and upwd!=''" >   upwd  =#{upwd}, </if>   

8.       <if   test = "sex!=null and sex!=''" >   sex  =#{sex}, </if>   

9.       <if   test = "birthday!=null" >   birthday  =#{birthday}, </if>   

10.     </set>   

11.      where   uid =#{uid}  

12.     </update>   

Trim trim 代替 where

1.  <!--  案例 5 :動態 sql trim   代替 where      -->   

2.       <select   id = "selectUsersTrimWhere"   parameterType = "user"   resultType = "user" >   

3.      select * from users   

4.      <!--   

5.      prefix: 指添加前綴修飾   

6.      suffix: 添加后綴修飾   

7.      prefixOverrides :去掉前綴修飾   

8.      suffixOverrides :去掉后綴修飾   

9.       -- >   

10.  < trim  prefix = "where"    prefixOverrides = "and|or"   >   

11.  <if   test = "uname!=null and uname!=''" >  and uname like "%"#{uname}"%"  </if>    

12.  <if   test = "sex!=null and sex!=''" > and  sex  = #{sex}  </if>    

13.  </trim>   

14.  </select>   

Trim 代替 set :

1.         <!--  案例 6 :動態 sql trim   代替 set    -->   

2.         <update   id = "updateTrimSet"   parameterType = "user" >   

3.    

4.  update users    

5.        

6.     <trim   prefix = "set"   suffixOverrides = ","   suffix = "where  uid=#{uid}"   >   

7.       <if   test = "uname!=null and uname!=''" >   uname  =#{uname}, </if>   

8.       <if   test = "upwd!=null and upwd!=''" >   upwd  =#{upwd}, </if>   

9.       <if   test = "sex!=null and sex!=''" >   sex  =#{sex}, </if>   

10.       <if   test = "birthday!=null" >   birthday  =#{birthday}, </if>   

11.     </trim>   

12.        

F oreach 來遍歷集合

1.  <!-- 案例 7: 動態 sql foreach    遍歷數組   -->   

2.  <select   id = "selectUsersForeachArray"    resultType = "user" >   

3.      select * from users  where uid  in    

4.      <!--   

5.          collection: 要遍歷的集合   

6.          item: 當前正在遍歷的對象的變量名   

7.          open: 開始遍歷   

8.          close: 結束便利   

9.          index: 下標   

10.          separator: 分割   

11.       -- >   

12.       <foreach   collection = "array"   item = "item"   open = "("   close = ")"   index = "index"   separator = "," >   

13.          #{item}  

14.       </foreach>   

15.    

16.  </select>   

 

總結

熟練掌握以上 Mysql 的動態 SQL , 我們可以更得心應手的完成我的功能,寫更少的代碼,實現更多的功能。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

天门市| 温宿县| 广西| 湛江市| 东至县| 涡阳县| 电白县| 武定县| 沛县| 合肥市| 龙江县| 汝州市| 河池市| 长乐市| 岚皋县| 越西县| 东海县| 合山市| 页游| 金寨县| 五华县| 晋城| 资溪县| 兴海县| 怀安县| 永春县| 海丰县| 广元市| 通江县| 夹江县| 谢通门县| 精河县| 波密县| 拜城县| 巴里| 安阳县| 龙海市| 灵石县| 西青区| 临夏县| 韶关市|