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,實體對象之間轉換的一個注解。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM