程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> MyBatis學習--SqlMapConfig.xml配置文件,sqlmapconfig.xml配置

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

編輯:JAVA綜合教程

MyBatis學習--SqlMapConfig.xml配置文件,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中,定義很多的statement,statement需要parameterType指定輸入參數的類型、需要resultType指定輸出結果的映射類型。如果在指定類型時輸入類型全路徑,不方便進行開發,可以針對parameterType或resultType指定的類型定義一些別名,在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代理方法

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved