MyBatis常用的標籤和註解
阿新 • • 發佈:2021-07-22
常用標籤
1.select:用於編寫查詢語句用的標籤
- id:表示當前<select>標籤的唯一標識
- parameterType:指定查詢限制條件的輸入型別,一般使用#{ }實現的是向prepareStatement中的預處理語句中設定引數值
- resultType:指定查詢返回結果的輸出型別,如果返回的結果是一個實體類,必須要求實體類的屬性和表的欄位名稱相同
- resultMap:也是一個輸出型別,配合<resultMap>標籤使用
- flushCache:設定查詢的時候是否清空快取,預設為false
- useCache:將查詢結果放入快取中,預設為true
- timeout:設定查詢返回結果的最大響應時間
- fetchSize:每次批量返回的結果行數。預設不設定
- statementType:STATEMENT、PREPARED或CALLABLE的一種,這會讓MyBatis使用選擇Statement、PreparedStatement或CallableStatement。預設值:PREPARED
- resultSetType:設定遊標FORWARD_ONLY、SCROLL_SENSITIVE、SCROLL_INSENSITIVE中的一種。預設不設定
2.resultMap:用於解決實體類中屬性和表字段名不相同的問題
- id:表示當前<resultMap>標籤的唯一標識
- result:定義表字段和實體類屬性的對應關係
- property:記錄實體類的屬性
- column:記錄表的欄位名稱
3.insert– 對映插入語句
4.update– 對映更新語句
5.delete– 對映刪除語句
6.if
1 <select id="findUserByName" 2 resultType="User"> 3 SELECT * FROM User 4 WHERE valid = 1 5 <if test="name!= null"> 6 AND name like #{name} 7 </if> 8 </select>
7.choose (when, otherwise)(類似於switch)
1 <select id="findUser" 2 resultType="User"> 3 SELECT * FROM User WHERE age = 26 4 <choose> 5 <when test="name!= null"> 6 AND name like #{name} 7 </when> 8 <when test="sex!= null "> 9 AND sex like #{sex} 10 </when> 11 <otherwise> 12 AND valid = 1 13 </otherwise> 14 </choose> 15 </select>
8.trim (where, set)
1 //prefixOverrides 屬性會忽略通過管道分隔的文字序列(注意此例中的空格也是必要的)。它的作用是移除所有指定在 prefixOverrides 屬性中的內容,並且插入 prefix 屬性中指定的內容。 2 <trim prefix="WHERE" prefixOverrides="AND |OR "> 3 ... 4 </trim> 5 6 //set 元素會動態前置 SET 關鍵字,同時也會刪掉無關的逗號 7 <trim prefix="SET" suffixOverrides=","> 8 ... 9 </trim>
9.foreach
1 //collection="要遍歷的集合" 2 //item = "可以在元素體內使用的集合項" 3 //index = "索引" 4 //open = "開始字串" 5 //separator = "分隔符" 6 //close = "結束字串" 7 <select id="selectUser" resultType="User"> 8 SELECT * 9 FROM User 10 WHERE ID in 11 <foreach item="item" index="index" collection="list" 12 open="(" separator="," close=")"> 13 #{item} 14 </foreach> 15 </select>
10.bind
1 //bind可以建立一個變數並將其繫結到上下文 2 <select id="selectUser" resultType="user"> 3 <bind name="pattern" value="'%' + _parameter.getTitle() + '%'" /> 4 SELECT * FROM User 5 WHERE name LIKE #{pattern} 6 </select>
常見註解
@MapperScan
該註解主要是掃描某個包目錄下的Mapper,將Mapper介面類交給Spring進行管理。
1 package com.tcc; 2 3 import org.mybatis.spring.annotation.MapperScan; 4 @MapperScan 5 public class TccApplication { 6 7 public static void main(String[] args) { 8 SpringApplication.run(TccApplication.class, args); 9 } 10 11 }
其實,從名字上就能看出,是用來掃描的Mapper的。
掃描包路徑可以是一個或者多個,也可以在路徑中可以使用 * 作為萬用字元對包名進行匹配 。
@Param
作為Dao層的註解,作用是用於傳遞引數,從而可以與SQL中的的欄位名相對應。使用方法:
1 @Param 2 public List<Role> findRoleByAnnotation(@Param("roleName") String roleName, @Param("note") String note);
@Autowired
顧名思義,就是自動裝配,其作用是為了消除程式碼Java程式碼裡面的getter/setter與bean屬性中的property。
@Service
此注註解屬於業務邏輯層,service或者manager層
預設按照名稱進行裝配,如果名稱可以通過name屬性指定,如果沒有name屬性,註解寫在欄位上時,預設去欄位名進行查詢,如果註解寫在setter方法上,預設按照方法屬性名稱進行裝配。當找不到匹配的bean時,才按照型別進行裝配,如果name名稱一旦指定就會按照名稱進行裝配.
@Insert
新增:@Insert("sql語句")
@Update
更新:@Update("sql語句")
@Delete
刪除:@Delete("sql語句")
@Select
查詢:@Select("sql語句")
@Result
對映查詢結果集到實體類屬性
@Results
可以與@Result 一起使用,封裝多個結果集
@ResultMap
引用@Results 定義的封裝
@One
一對一結果集封裝
@Many
一對多結果集封裝
@CacheNamespace
實現註解二級快取的使用
@Options
能夠設定快取時間,能夠為物件生成自增的key
@Controller
用於指示Spring類的例項是一個控制器。Controller介面的實現類只能處理一個單一請求動作,而@Controller註解的控制器可以支援同時處理多個請求動作,更加靈活。
@RequestMapping
使用 @RequestMapping 來對映請求,也就是通過它來指定控制器可以處理哪些URL請求,可以在方法和類的宣告中使用。
@ResponseBody
用於方便json與string,實體物件之間轉換的一個註解。