1. 程式人生 > 其它 >MyBatis常用的標籤和註解

MyBatis常用的標籤和註解

常用標籤

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,實體物件之間轉換的一個註解。