1. 程式人生 > 其它 >Mybaits基礎標籤

Mybaits基礎標籤

技術標籤:Mybatismybatis

提示:文章寫完後,目錄可以自動生成,如何生成可參考右邊的幫助文件

文章目錄


一、forEach迴圈

用來迴圈容器的標籤forEach。

foreach元素的屬性主要有item,index,collection,open,separator,close。

  • item:集合中元素迭代時的別名,
  • index:集合中元素迭代時的索引
  • open:常用語where語句中,表示以什麼開始,比如以’('開始
  • separator:表示在每次進行迭代時的分隔符,
  • close 常用語where語句中,表示以什麼結束,

在使用foreach的時候最關鍵的也是最容易出錯的就是collection屬性,該屬性是必須指定的,但是在不同情況下,該屬性的值是不一樣的,主要有一下3種情況:

  • 如果傳入的是單引數且引數型別是一個List的時候,collection屬性值為list .
  • 如果傳入的是單引數且引數型別是一個array陣列的時候,collection的屬性值為array .
  • 如果傳入的引數是多個的時候,我們就需要把它們封裝成一個Map了,當然單引數也可以封裝成map,實際上如果你在傳入引數的時候,在MyBatis裡面也是會把它封裝成一個Map的,map的key就是引數名,所以這個時候collection屬性值就是傳入的List或array物件在自己封裝的map裡面的key。

針對最後一條,我們來看一下官方說法:

注意:你可以將一個 List 例項或者陣列作為引數物件傳給 MyBatis,當你這麼做的時候,MyBatis 會自動將它包裝在一個 Map 中並以名稱為鍵。List 例項將會以“list”作為鍵,而陣列例項的鍵將是“array”。

所以,不管是多引數還是單引數的list,array型別,都可以封裝為map進行傳遞。如果傳遞的是一個List,則mybatis會封裝為一個list為key,list值為object的map,如果是array,則封裝成一個array為key,array的值為object的map,如果自己封裝呢,則colloection裡放的是自己封裝的map裡的key值


二、concat模糊查詢

// 比如說我們想要進行條件查詢,但是幾個條件不是每次都要使用,那麼我們就可以
// 通過判斷是否拼接到sql中
<select id = "queryById" resultMap="BascResultMap" parameterType="entity">
    SELECT * from entity
	<where>    
		<if test="name!=null">
            name like concat('%',concat(#{name},'%'))
		</if>
	</where>
</select>

三、choose (when, otherwise)標籤

choose標籤是按順序判斷其內部when標籤中的test條件出否成立,如果有一個成立,則 choose 結束。當 choose 中所有 when 的條件都不滿則時,則執行 otherwise 中的sql。類似於Java 的 switch 語句,choose 為 switch,when 為 case,otherwise 則為 default。

例如下面例子,同樣把所有可以限制的條件都寫上,方面使用。choose會從上到下選擇一個when標籤的test為true的sql執行。安全考慮,我們使用where將choose包起來,放置關鍵字多於錯誤。

<!--  choose(判斷引數) - 按順序將實體類 User 第一個不為空的屬性作為:where條件 -->
<select id="getUserList_choose" resultMap="resultMap_user" parameterType="com.yiibai.pojo.User">
    SELECT *  
      FROM User u   
	<where>
		<choose>   
			<when test="username !=null ">
                u.username LIKE CONCAT(CONCAT('%', #{username, jdbcType=VARCHAR}),'%')
			</when>            
			<when test="sex != null and sex != '' ">
                AND u.sex = #{sex, jdbcType=INTEGER}  
			</when>     
			<when test="birthday != null ">
                AND u.birthday = #{birthday, jdbcType=DATE}  
			</when>
			<otherwise>
				
			</otherwise>
		</choose>
	</where>
</select>

總結

提示:這裡對文章進行總結:
例如:以上就是今天要講的內容,本文僅僅簡單介紹了pandas的使用,而pandas提供了大量能使我們快速便捷地處理資料的函式和方法。