日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java元婴期(24)----java进阶(mybatis(3)---动态sql(重点))

發布時間:2025/3/21 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java元婴期(24)----java进阶(mybatis(3)---动态sql(重点)) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是動態sql

mybatis核心對sql語句進行靈活操作,通過表達式進行判斷,對sql進行靈活拼接、組裝。

標簽介紹

1.if標記if是動態sql中最最常用的標記

動態 SQL 通常要做的事情是有條件地包含 where 子句的一部分。常用形式:

<select id="**" resultType="**" parameterType="**">select * from table where 1=1<if test="attr!=null">and attrColumn>#{attr}</if></select>

2.choose, when, otherwise標記

有些時候,我們不想用到所有的條件語句,而只想從中擇其一二。針對這種情況,MyBatis 提供了 choose 元素。常用形式:

select * from table where 1=1 <choose><when test="attr1!=null">and attrColumn like #{attr}</when>…… <otherwise>and attr2 is not null</otherwise> </choose>

3.where標記

select * from table <where><if test="attr1!=null">attr1Column like #{attr1}</if><if test="attr2!=null">and attr2Column =#{attr2}</if> </where>

可以看到,使用where標記有兩個好處:

  • ?不再需要在where后面加上1=1這個條件
  • 會智能處理and

4.foreach標記

foreach標記是最為強大的一個標記,最基本的功能是用來實現對一個集合進行遍歷查詢,循環賦值。通常是在構建 IN 條件語句的時候使用。

foreach標記主要是使用一下一些屬性標記來實現:?

  •   item:迭代的內容?
  •   collection:循環的集合或指定的類型?
  •   separator:元素之間的分隔符?
  •   open:開始符,可選屬性?
  •   close:閉合符,可選屬性,一般與open聯合使用?
  •   index:list的序號,可選屬性?

使用foreach進行遍歷查詢的常用形式:

select * from table <where>id in<foreach item="item" index="index" collection="list"open="(" separator="," close=")">#{item}</foreach></where>

?

需求

用戶信息綜合查詢列表和用戶信息查詢列表總數這兩個statement的定義使用動態sql。對查詢條件進行判斷,如果輸入參數不為空才進行查詢條件拼接。

mapper.xml

測試代碼

sql片段

1.需求

將上邊實現的動態sql判斷代碼塊抽取出來,組成一個sql片段。其它的statement中就可以引用sql片段。方便程序員進行開發。

2.定義sql片段

3.引用sql片段

在mapper.xml中定義的statement中引用sql片段:

?

foreach(了解)

向sql傳遞數組或List,mybatis使用foreach解析

1.需求

在用戶查詢列表和查詢總數的statement中增加多個id輸入查詢。

sql語句如下:

兩種方法:

  • SELECT * FROM USER WHERE id=1 OR id=10 OR id=16
  • SELECT * FROM USER WHERE id IN(1,10,16)

2.在輸入參數類型中添加List<Integer> ids傳入多個id

3.修改mapper.xml

WHERE id=1 OR id=10 OR id=16

在查詢條件中,查詢條件定義成一個sql片段,需要修改sql片段。

4.測試代碼

5.另外一個sql的實現

?

總結

以上是生活随笔為你收集整理的java元婴期(24)----java进阶(mybatis(3)---动态sql(重点))的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。