1. 程式人生 > >mybatis註解開發

mybatis註解開發

 

MyBatis可以利用SQL對映檔案來配置,也可以利用Annotation來設定。MyBatis提供的一些基本註解如下表所示。

 

註解

目標

相應的XML

描述

@CacheNamespace

<cache>  

為給定的名稱空間(比如類)配置快取。屬性:

implemetation,eviction,

flushInterval , size 和 readWrite 。

@CacheNamespaceRef

<cacheRef>

參照另外一個名稱空間的快取來使用。

屬性:value,也就是類的完全限定名。

@ConstructorArgs

方法

<constructor>

收集一組結果傳遞給物件構造方法。

屬性:value,是形式引數的陣列

@Arg

方法

<arg>

<idArg>

 

單獨的構造方法引數,是ConstructorArgs  集合的一部分。屬性:id,column,javaType,typeHandler。

id屬性是布林值,來標識用於比較的屬性,和<idArg>XML 元素相似

@TypeDiscriminator

方法

<discriminator>

一組例項值被用來決定結果對映的表

現。屬性:Column, javaType ,  jdbcType typeHandler,cases。

cases屬性就是例項的陣列。

@Case

方法

<case>

單獨例項的值和它對應的對映。屬性:value  ,type ,results 。

Results 屬性是結果陣列,因此這個註解和實際的ResultMap 很相似,由下面的  Results註解指定

@Results

方法

<resultMap>

結果對映的列表,包含了一個特別結果

列如何被對映到屬性或欄位的詳情。

屬性:value ,是Result註解的陣列

@Result

方法

<result>

<id>

在列和屬性或欄位之間的單獨結果映

射。屬性:id ,column , property,

javaType ,jdbcType ,type Handler ,

one,many。id 屬性是一個布林值,表

示了應該被用於比較的屬性。one屬性是單獨的聯絡,和 <association> 相似,而many 屬性是對集合而言的,和

<collection>相似。

@One

方法

<association>  

複雜型別的單獨屬性值對映。屬性:

select,已對映語句(也就是對映器方

法)的完全限定名,它可以載入合適類

型的例項。注意:聯合對映在註解API

中是不支援的。

@Many

方法

<collection>

複雜型別的集合屬性對映。屬性:

select,是對映器方法的完全限定名,它可載入合適型別的一組例項。注意:聯合對映在 Java註解中是不支援的。

@Options

方法

對映語句的屬性

這個註解提供訪問交換和配置選項的寬廣範圍,它們通常在對映語句上作為屬性出現。而不是將每條語句註解變複雜,Options 註解提供連貫清晰的方式來訪問它們。屬性:useCache=true,

flushCache=false,

resultSetType=FORWARD_ONLY,

statementType=PREPARED,

fetchSize= -1,timeout=-1 ,

useGeneratedKeys=false ,

keyProperty=”id“。

理解Java 註解是很重要的,因為沒有辦法來指定“null ”作為值。因此,一旦你使用了 Options註解,語句就受所有預設值的支配。要注意什麼樣的預設值來避免不期望的行為

@Insert

@Update

@Delete

方法

<insert>

<update>

<delete>

這些註解中的每一個代表了執行的真實 SQL。它們每一個都使用字串陣列(或單獨的字串)。如果傳遞的是字串陣列,它們由每個分隔它們的單獨空間串聯起來。屬性:value,這是字串陣列用來組成單獨的SQL語句

@InsertProvider

@UpdateProvider

@DeleteProvider

@SelectProvider

方法

<insert>

<update>

<delete>

<select>

允許建立動態

SQL。

這些可選的SQL註解允許你指定一個

類名和一個方法在執行時來返回執行

的SQL。基於執行的對映語句, MyBatis

會例項化這個類,然後執行由 provider

指定的方法. 這個方法可以選擇性的接

受引數物件作為它的唯一引數,但是必

須只指定該引數或者沒有引數。屬性:

type,method。type 屬性是類的完全限定名。method  是該類中的那個方法名。

@Param

引數

N/A

當對映器方法需多個引數,這個註解可以被應用於對映器方法引數來給每個引數一個名字。否則,多引數將會以它們的順序位置來被命名。比如

#{1},#{2} 等,這是預設的。

使用@Param(“person”),SQL中引數應該被命名為#{person}。