Mybatis之全局配置文件

一、全局配置文件

config.xml :配置內容和順序如下(順序不能亂):dtd約束規定

Properties(屬性)屬性配置文件

Settings(全局參數設置)懶加載二級緩存

typeAliases(類型別名)

typeHandlers(類型處理器)

objectFactory(對象工廠)

plugins(插件)分頁插件

environments(環境信息集合)

         environment(單個環境信息)

                   transactionManager(事物)

                   dataSource(數據源)

mappers(映射器)

1 、1 常用配置

Properties

配置文件的加載順序

  1. 先加載properties中property標籤聲明的屬性
  2. 再加載properties標籤引入的java配置文件(properties配置文件)中的屬性
  3. parameterType的值會和properties的屬性值發生衝突。(比如實體類的字段和)
<properties resource="dbinfo.properties">
		<!--加載一個配置文件 <property name="driver" value="com.mysql.jdbc.Driver"/> -->
	</properties>

settings

mybatis全局配置參數,全局參數將會影響mybatis的運行行爲。

Setting(設置) Description(描述) Valid Values(驗證值組)
cacheEnabled 在全局範圍內啓用或禁用緩存配置任何映射器在此配置下。 true | false
lazyLoadingEnabled 在全局範圍內啓用或禁用延遲加載。禁用時,所有協會將熱加載。 true | false
aggressiveLazyLoading 啓用時,有延遲加載屬性的對象將被完全加載後調用懶惰的任何屬性。否則,每一個屬性是按需加載。 true | false
multipleResultSetsEnabled 允許或不允許從一個單獨的語句(需要兼容的驅動程序)要返回多個結果集。 true | false
useColumnLabel 使用列標籤,而不是列名。在這方面,不同的驅動有不同的行爲。參考驅動文檔或測試兩種方法來決定你的驅動程序的行爲如何。 true | false
useGeneratedKeys 允許JDBC支持生成的密鑰。兼容的驅動程序是必需的。此設置強制生成的鍵被使用,如果設置爲true,一些驅動會不兼容性,但仍然可以工作。 true | false
autoMappingBehavior 指定MyBatis的應如何自動映射列到字段/屬性。NONE自動映射。 PARTIAL只會自動映射結果沒有嵌套結果映射定義裏面。 FULL會自動映射的結果映射任何複雜的(包含嵌套或其他)。 NONE, PARTIAL, FULL
defaultExecutorType 配置默認執行人。SIMPLE執行人確實沒有什麼特別的。 REUSE執行器重用準備好的語句。 BATCH執行器重用語句和批處理更新。 SIMPLE REUSE BATCH
defaultStatementTimeout 設置驅動程序等待一個數據庫響應的秒數。 Any positive integer
safeRowBoundsEnabled 允許使用嵌套的語句RowBounds true | false
mapUnderscoreToCamelCase 從經典的數據庫列名A_COLUMN啓用自動映射到駱駝標識的經典的Java屬性名aColumn true | false
localCacheScope MyBatis的使用本地緩存,以防止循環引用,並加快反覆嵌套查詢。默認情況下(SESSION)會話期間執行的所有查詢緩存。如果localCacheScope=STATMENT本地會話將被用於語句的執行,只是沒有將數據共享之間的兩個不同的調用相同的SqlSession SESSION | STATEMENT
dbcTypeForNull 指定爲空值時,沒有特定的JDBC類型的參數的JDBC類型。有些驅動需要指定列的JDBC類型,但其他像NULLVARCHAROTHER的工作與通用值。 JdbcType enumeration. Most common are: NULL, VARCHAR and OTHER
lazyLoadTriggerMethods 指定觸發延遲加載的對象的方法。 A method name list separated by commas
defaultScriptingLanguage 指定所使用的語言默認爲動態SQL生成。 A type alias or fully qualified class name.
callSettersOnNulls 指定如果setter方法​​或地圖的put方法時,將調用檢索到的值是null。它是有用的,當你依靠Map.keySet()或null初始化。注意原語(如整型,布爾等)不會被設置爲null true | false
logPrefix 指定的前綴字串,MyBatis將會增加記錄器的名稱。 Any String
logImpl 指定MyBatis的日誌實現使用。如果此設置是不存在的記錄的實施將自動查找。 SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING
proxyFactory 指定代理工具,MyBatis將會使用創建懶加載能力的對象。 CGLIB | JAVASSIS

注意:配置文件中配置顯示sql語句

 

<settings>
<!--打印查詢語句 -->
<settingname="logImpl"value="STDOUT_LOGGING"/>
</settings>

 

typeAliases

對實體類進行別名的定義

 ①: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

但這種我們不經常使用

②:自定義別名

<typeAliases>
          <!--定義實體類的別名爲 book-->
		 <typeAlias type="com.tf.domain.Book" alias="book"/> 
		<!-- 批量別名定義(推薦) -->
		<!-- package:指定包名稱來爲該包下的po類聲明別名,默認的別名就是類名(首字母大小寫都可) -->
		<package name="com.qf.domain"/>
	</typeAliases>

輸入映射

parameterType

如果傳入對個參數,若參數類型是實體類中的

①:若參數類型是實體類中的,可以傳入實體類

②:也可以將參數設置爲Map

輸出映射  

 resultType(實體類和數據庫的字段一致)

使用resultType進行結果映射時,需要查詢出的列名和映射的對象的屬性名一致,才能映射成功。

如果查詢的列名和對象的屬性名全部不一致,那麼映射的對象爲空。

如果查詢的列名和對象的屬性名有一個一致,那麼映射的對象不爲空,但是隻有映射正確那一個屬性纔有值。

如果查詢的sql的列名有別名,那麼這個別名就是和屬性映射的列名。

resultMap(數據庫的字段和實體列的字段不一致)

使用resultMap進行結果映射時,不需要查詢的列名和映射的屬性名必須一致。但是需要聲明一個resultMap節點來對列名和屬性名進行映射。

property:  實體類中的字段名

column: 數據庫中的字段名

 <resultMap id="users1" type="com.tf.domain.Users1">
          <id property="uid" column="id"/>
          <result property="uname" column="name"></result>
           <result property="upassword" column="password"></result>
            <result property="ustatus" column="status"></result> 
            <result property="ucreateDate" column="createDate"></result>
            
    </resultMap>
     <select id="findAllUser1" resultMap="users1">
       select * from users 
    </select>

總結:

ResultType:結果集類型可以是對象也可以是Map實體類和數據庫表的字段一致

ResultMap:結果集映射,當實體類屬性與數據庫字段(別名)不一致需要做結果映射

ParameterType:參數類型可以是對象也可以是Map

ParameterMap:不用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章