mybatis註解開發

 

MyBatis能夠利用SQL映射文件來配置,也能夠利用Annotation來設置。MyBatis提供的一些基本註解以下表所示。java

 

註解mysql

目標sql

相應的XML數據庫

描述數組

@CacheNamespace緩存

mybatis

<cache>  app

爲給定的命名空間(好比類)配置緩存。屬性:ide

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}。

 

 

測試select,insert,update,delete操做

實體類:

項目結構:

mybatis-config.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
<!-- XML 配置文件包含對 MyBatis 系統的核心設置 -->

<configuration>
    <properties resource="db.properties" />
    
    <settings>
        <!-- 指定 MyBatis 所用日誌的具體實現 -->
        <setting name="logImpl" value="STDOUT_LOGGING"/>
        <!-- 打開懶加載的開關 -->
        <setting name="lazyLoadingEnabled" value="true"/>
        <!-- 將積極加載改成消極加載 -->
        <setting name="aggressiveLazyLoading" value="false"/>
    </settings>
    <!-- 定義別名 位置在setting以後 -->
    <!--     
    <typeAliases>
        <typeAlias alias="user" type="org.model.User"></typeAlias>
    </typeAliases> 
    -->
    <!-- 別名定義 推薦這種方式 掃描該包中的實體類以及子包中的實體類-->
     <typeAliases>
        <package name="model"/>
    </typeAliases>
    
    <environments default="mysql">
        <!-- 環境配置,即鏈接的數據庫。 -->
        <environment id="mysql">
            <!-- 指定事務管理類型,type="JDBC"指直接簡單使用了JDBC的提交和回滾設置 -->
            <transactionManager type="JDBC" />
            <!-- dataSource指數據源配置,POOLED是JDBC鏈接對象的數據源鏈接池的實現。 -->
            <dataSource type="POOLED">
                <property name="driver" value="${driver}" />
                <property name="url" value="${url}" />
                <property name="username" value="${username}" />
                <property name="password" value="${password}" />
            </dataSource>
        </environment>
    </environments>
    <!-- mappers告訴了MyBatis去哪裏找持久化類的映射文件 -->
    <mappers>
        <!-- <mapper resource="org/mapper/ten/proxy/UserMapper.xml"/> -->
        <mapper class="Intefaceproxy.UserInterfaceMapper"/>
    </mappers>
</configuration> 

能夠看到以前的xxxMapper.xml文件已經刪除不須要引入了  而引入的則是一個接口  下面分別進行測試

@insert

 

 

@delete

 

 

 

@select

 

 

 

@update

 

-------------------------------------------

@One 一對一關係測試

對應的實體類

Person

Card

 

mybatis-config.xml中配置mapper接口的位置

CardMapper接口

PersonMapper接口

測試:

--------------------------

一對多關係測試

Student

Clazz

 

 

mybatis-config.xml中配置mapper接口的位置

StudentMapper接口

ClazzMapper接口

測試:

 --------------------------------

多對多關係測試

實體類以及表關係

user表

article表

orders表

中間表item:

 mybatis-config.xml中配置mapper接口的位置

userMapper接口:

articleMapper接口:

ordersMapper接口:

測試:

--------------------------

相關文章
相關標籤/搜索