MyBatis學習--SqlMapConfig.xml配置文件


  • 簡介

  SqlMapConfig.xml是MyBatis的全局配置文件,在前面的文章中我們可以看出,在SqlMapConfig.xml主要是配置了數據源、事務和映射文件,其實在SqlMapConfig.xml中還可以配置很多信息,如:

  1、properties(屬性)

  2、settings(全局配置參數)

  3、typeAliases(類型別名)

  4、typeHandlers(類型處理器)

  5、objectFactory(對象工廠)

  6、plugins(插件)

  7、environments(環境集合屬性對象)

    7.1、environment(環境子屬性對象)

    7.2、transactionManager(事務管理)

    7.3、dataSource(數據源)

  8、mappers(映射器)

 

  • properties

  數據庫連接參數單獨配置在db.properties中,只需要在SqlMapConfig.xml中加載db.properties的屬性值,SqlMapConfig.xml中就不需要對數據庫連接參數硬編碼,將數據庫連接參數只配置在db.properties中,原因:方便對參數進行統一管理,其它xml可以引用該db.properties。這樣如果有多處修改數據源信息的話,只需要修改db.properties配置文件即可。

  classpath下定義db.properties文件如下:

 

1 jdbc.driver=com.mysql.jdbc.Driver
2 jdbc.url=jdbc:mysql://localhost:3306/shop
3 jdbc.username=root
4 jdbc.password=

 

  SqlMapConfig.xml引用如下:

 1   <properties resource="db.properties"/>
 2     <environments default="development">
 3         <environment id="development">
 4             <transactionManager type="JDBC"/>
 5             <dataSource type="POOLED">
 6                 <property name="driver" value="${jdbc.driver}"/>
 7                 <property name="url" value="${jdbc.url}"/>
 8                 <property name="username" value="${jdbc.username}"/>
 9                 <property name="password" value="${jdbc.password}"/>
10             </dataSource>
11       </environment>
12   </environments>

  properties特性:

  MyBatis 將按照下面的順序來加載屬性:

  1、在 properties 元素體內定義的屬性首先被讀取。

  2、然后會讀取properties 元素中resource或 url 加載的屬性,它會覆蓋已讀取的同名屬性。

  3、最后讀取parameterType傳遞的屬性,它會覆蓋已讀取的同名屬性。

  因此,通過parameterType傳遞的屬性具有最高優先級,resource或 url 加載的屬性次之,最低優先級的是 properties 元素體內定義的屬性。

  一般不要在properties元素體內添加任何屬性值,只將屬性值定義在properties文件中。properties文件中定義屬性名要有一定的特殊性,如:XXXXX.XXXXX.XXXX。

 

  • settings(全局配置參數)

  mybatis框架在運行時可以調整一些運行參數。比如:開啟二級緩存、開啟延遲加載。全局參數將會影響mybatis的運行行為。具體需要可以查看MyBatis的文檔。

 

  • typeAliases(類型別名)

  mapper.xml中,定義很多的statementstatement需要parameterType指定輸入參數的類型、需要resultType指定輸出結果的映射類型。如果在指定類型時輸入類型全路徑,不方便進行開發,可以針對parameterTyperesultType指定的類型定義一些別名,在mapper.xml中通過別名定義,方便開發。

  1、MyBatis默認支持的別名:

別名

映射的類型

_byte 

byte 

_long 

long 

_short 

short 

_int 

int 

_integer 

int 

_double 

double 

_float 

float 

_boolean 

boolean 

string 

String 

byte 

Byte 

long 

Long 

short 

Short 

int 

Integer 

integer 

Integer 

double 

Double 

float 

Float 

boolean 

Boolean 

date 

Date 

decimal 

BigDecimal 

bigdecimal 

BigDecimal 

 

 

 

  2、自定義別名:

1 <typeAliases>
2         <!-- 單個別名 -->
3         <typeAlias type="com.luchao.mybatis.first.po.User" alias="user"/>
4 </typeAliases>

  3、批量別名:

1 <typeAliases>
2         <!-- 批量別名定義,掃描整個包下的類,別名為類名(首字母大寫或小寫都可以) -->
3         <package name="com.luchao.mybatis.first.po"/>
4 </typeAliases>
  • typeHandlers(類型處理器)

  類型處理器用於java類型和jdbc類型映射,如下:

 

1 <select id="findUserById" parameterType="int" resultType="user">
2 select * from user where id = #{id}
3 </select>

 

  mybatis自帶的類型處理器基本上滿足日常需求,不需要單獨定義。

  mybatis支持類型處理器:

 

類型處理器

Java類型

JDBC類型

BooleanTypeHandler 

Boolean,boolean 

任何兼容的布爾值

ByteTypeHandler 

Byte,byte 

任何兼容的數字或字節類型

ShortTypeHandler 

Short,short 

任何兼容的數字或短整型

IntegerTypeHandler 

Integer,int 

任何兼容的數字和整型

LongTypeHandler 

Long,long 

任何兼容的數字或長整型

FloatTypeHandler 

Float,float 

任何兼容的數字或單精度浮點型

DoubleTypeHandler 

Double,double 

任何兼容的數字或雙精度浮點型

BigDecimalTypeHandler 

BigDecimal 

任何兼容的數字或十進制小數類型

StringTypeHandler 

String 

CHAR和VARCHAR類型

ClobTypeHandler 

String 

CLOB和LONGVARCHAR類型

NStringTypeHandler 

String 

NVARCHAR和NCHAR類型

NClobTypeHandler 

String 

NCLOB類型

ByteArrayTypeHandler 

byte[] 

任何兼容的字節流類型

BlobTypeHandler 

byte[] 

BLOB和LONGVARBINARY類型

DateTypeHandler 

Date(java.util)

TIMESTAMP類型

DateOnlyTypeHandler 

Date(java.util)

DATE類型

TimeOnlyTypeHandler 

Date(java.util)

TIME類型

SqlTimestampTypeHandler 

Timestamp(java.sql)

TIMESTAMP類型

SqlDateTypeHandler 

Date(java.sql)

DATE類型

SqlTimeTypeHandler 

Time(java.sql)

TIME類型

ObjectTypeHandler 

任意

其他或未指定類型

EnumTypeHandler 

Enumeration類型

VARCHAR-任何兼容的字符串類型,作為代碼存儲(而不是索引)。

  • mappers(映射器)

  Mapper配置的幾種方法:

  1、<mapper resource=" " />

  使用相對於類路徑的資源,如:<mapper resource="sqlmap/User.xml" />

  2、<mapper url=" " />

  使用完全限定路徑,如:<mapper url="file:///D:\workspace_spingmvc\mybatis_01\config\sqlmap\User.xml" />

  3、 <mapper class=" " />

  單個別名定義,使用mapper接口類路徑,如:<mapper class="com.luchao.mybatis.first.mapper.UserMapper"/>

  注意:此種方法要求mapper接口名稱和mapper映射文件名稱相同,且放在同一個目錄中。

  通過mapper接口加載單個 映射文件遵循一些規范:需要將mapper接口類名和mapper.xml映射文件名稱保持一致,且在一個目錄中

  上邊規范的前提是:使用的是mapper代理方法

  4、<package name=""/>

  注冊指定包下的所有mapper接口,如:<package name="cn.itcast.mybatis.mapper"/>

  注意:此種方法要求mapper接口名稱和mapper映射文件名稱相同,且放在同一個目錄中。

  批量加載mapper,指定mapper接口的包名,mybatis自動掃描包下邊所有mapper接口進行加載,遵循一些規范:需要將mapper接口類名和mapper.xml映射文件名稱保持一致,且在一個目錄 中

上邊規范的前提是:使用的是mapper代理方法

 


免責聲明!

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



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