MyBatis配置文件全解析

#         MyBatis配置文件全解析

##1、mybatis-Config.xml配置文件内容和顺序如下:

1.1、properties(属性)
1.2、settings(全局配置参数)
1.3、typeAiases(类型别名)
1.4、typeHandlers(类型处理器)
1.5、objectFactory(对象工厂)
1.6、plugins(插件)
1.7、environments(环境集合属性对象)mappers(映射器)
1.8、environment(环境子属性对象)
1.9、transactionManager(事物管理)
1.10、datesource(数据源
1.11、mappers(映射器)

以上顺序不可颠倒,按照开发需要配置需要的配置内容。

<?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">
<!-- 1、配置 -->
<configuration>
    <!-- 2、 引入连接池的参数有两种方式:属性引入,文件引入-->
    
        <!-- 2.1、属性 :使用resource属性引入jdbc.properties文件-->
	<properties resource="jdbc.properties"> 
		<!-- 2.2、使用property子元素的方式引入属性值
		<property name="database.driver"   value="oracle.jdbc.driver.OracleDriver"/> 
		<property name="database.url"      value="jdbc:oracle:thin:@192.168.4.9:1521:orcl"/> 
		<property name="database.username" value="gcki_test"/> 
		<property name="database.password" value="gcki_test"/> 
		-->
	</properties>
	
	<!-- 3、全局参数配置   -->
<settings>
	<setting name="cacheEnabled" value="true"/>
    <setting name="lazyLoadingEnabled" value="true"/>
    <setting name="multipleResultSetsEnabled" value="true"/>
    <setting name="useColumnLabel" value="true"/>
    <setting name="useGeneratedKeys" value="false"/>
    <setting name="autoMappingBehavior" value="PARTIAL"/>
    <setting name="defaultExecutorType" value="SIMPLE"/>
    <setting name="defaultStatementTimeout" value="25"/>
    <setting name="safeRowBoundsEnabled" value="false"/>
    <setting name="mapUnderscoreToCamelCase" value="false"/>
    <setting name="localCacheScope" value="SESSION"/>
    <setting name="jdbcTypeForNull" value="OTHER"/>
    <setting name="lazyLoadTriggerMethods"   
             value="equals,clone,hashCode,toString"/>
</settings>
	
	
	<!-- 4、别名:不区分大小写,注册别名的两种方式:配置文件和包扫描 -->   
	<typeAliases>      
		<!--4.1、 自定义别名:不然在映射器配置文件中无法使用这个对象 ,type使用类的全限定名-->
		<typeAlias alias="role" type="pojo.Role"/>
		<!-- 4.2、包扫描的方式注册别名,该包下的pojo对象默认是首字母小写作为别名 
		(可以在POJO类上使用注解@Alias("role")起一个别名)--> 
		<package name="pojo" />
	</typeAliases>
	
	
	<!-- 5、类型处理器 	-->
	<typeHandlers>	
		<typeHandler jdbcType="VARCHAR" javaType="string" 
		             handler="com.learn.ssm.chapter4.typehandler.MyTypeHandler" /> 	    
		<package name="com.learn.ssm.chapter4.typehandler" />
	</typeHandlers>
	
	<!-- 6、类型工厂(不常用) -->
	<objectFactory></objectFactory>   
	
	<!-- 7、插件  -->
	<plugins></plugins>      
	
	
	<!-- 8、环境配置 -->
	<environments default="development">  
		<environment id="development">   
		     <!-- 8.1、事务管理器 --> 
			<transactionManager type="JDBC" />  
			<!-- 8.2、数据源 :value的取值方式${}-->
			<dataSource type="POOLED">
				<property name="driver"   value="${database.driver}" />
				<property name="url"      value="${database.url}" />
				<property name="username" value="${database.username}" />
				<property name="password" value="${database.password}" />
			</dataSource>
		</environment>
	</environments>
	
	
	
    <!--  9、数据库厂商标识(不常用)的两种方式:主流厂商标识、自定义
	<databaseIdProvider type="DB_VENDOR">
		<property name="Oracle" value="oracle" />
		<property name="MySQL" value="mysql" />
		<property name="DB2" value="db2" />
	</databaseIdProvider>
	 
	<databaseIdProvider  
		type="com.learn.ssm.chapter4.databaseidprovider.MyDatabaseIdProvider">
		<property name="msg" value="自定义DatabaseIdProvider" />
	</databaseIdProvider>
	 -->
	
	<!-- 10、映射器配置文件的 三种方式:映射器配置文件、映射器接口名、包扫描 -->
	<mappers>
	    <!-- 10.1、以配置文件的方式创建映射器:导入映射器的配置文件
	    <mapper resource="capter3/mapper/config/RoleMapper.xml"/>
	     -->
	    <!-- 10.2、以注解的方式创建的映射器:导入映射器接口的全限定名 -->
	    <mapper class="mapper.interfaced.RoleMapper"/> 
	   
	    <!-- 13.3、包扫描的方式注册映射器 
		<package name="mapper.interfaced" />
		-->
	</mappers>
	
	<!-- 特别说明:MyBatis的配置文件就这些内容, 但是配置的时候顺序不能乱,否则启动阶段出现异常-->
</configuration>

##3、settings全局参数配置

setting(设置)Description(描述)valid Values(验证值组)Default(默认值)
cacheEnabled在全局范围内启用或禁用缓存配置 任何映射器在此配置下。truefalse
lazyLoadingEnabled在全局范围内启用或禁用延迟加载。禁用时,所有相关联的将热加载。truefalse
aggressiveLazyLoading启用时,有延迟加载属性的对象将被完全加载后调用懒惰的任何属性。否则,每一个属性是按需加载。truefalse
multipleResultSetsEnabled允许或不允许从一个单独的语句(需要兼容的驱动程序)要返回多个结果集。truefalse
useColumnLabel使用列标签,而不是列名。在这方面,不同的驱动有不同的行为。参考驱动文档或测试两种方法来决定你的驱动程序的行为如何。truefalse
useGeneratedKeys允许JDBC支持生成的密钥。兼容的驱动程序是必需的。此设置强制生成的键被使用,如果设置为true,一些驱动会不兼容性,但仍然可以工作。truefalse
autoMappingBehavior指定MyBatis的应如何自动映射列到字段/属性。NONE自动映射。 PARTIAL只会自动映射结果没有嵌套结果映射定义里面。 FULL会自动映射的结果映射任何复杂的(包含嵌套或其他)。NONE,PARTIAL,FULLPARTIAL
defaultExecutorType配置默认执行人。SIMPLE执行人确实没有什么特别的。 REUSE执行器重用准备好的语句。 BATCH执行器重用语句和批处理更新。SIMPLE,REUSE,BATCHSIMPLE
safeRowBoundsEnabled允许使用嵌套的语句RowBounds。true 、falseFALSE
mapUnderscoreToCamelCase从经典的数据库列名A_COLUMN启用自动映射到骆驼标识的经典的Java属性名aColumn。true 、 falseFALSE
localCacheScopeMyBatis的使用本地缓存,以防止循环引用,并加快反复嵌套查询。默认情况下(SESSION)会话期间执行的所有查询缓存。如果localCacheScope=STATMENT本地会话将被用于语句的执行,只是没有将数据共享之间的两个不同的调用相同的SqlSession。SESSION  STATEMENTSESSION
dbcTypeForNull指定为空值时,没有特定的JDBC类型的参数的JDBC类型。有些驱动需要指定列的JDBC类型,但其他像NULL,VARCHAR或OTHER的工作与通用值。JdbcType enumeration. Most common are: NULL, VARCHAR and OTHEROTHER
lazyLoadTriggerMethods指定触发延迟加载的对象的方法。A method name list separated by commasequals,clone,hashCode,toString
defaultScriptingLanguage指定所使用的语言默认为动态SQL生成。A type alias or fully qualified class name.org.apache.ibatis.scripting.xmltags.XMLDynamicLanguageDriver
callSettersOnNulls指定如果setter方法​​或地图的put方法时,将调用检索到的值是null。它是有用的,当你依靠Map.keySet()或null初始化。注意原语(如整型,布尔等)不会被设置为null。true 、 falseFALSE
logPrefix指定的前缀字串,MyBatis将会增加记录器的名称。Any StringNot set
logImpl指定MyBatis的日志实现使用。如果此设置是不存在的记录的实施将自动查找。SLF4J 、 LOG4J 、 LOG4J2 、 JDK_LOGGING 、COMMONS_LOGGING 、 STDOUT_LOGGING 、NO_LOGGINGNot set
proxyFactory指定代理工具,MyBatis将会使用创建懒加载能力的对象。CGLIB 、JAVASSISTCGLIB

##4、配置别名(typeAiases)

mybatis默认支持的别名:

别名映射的类型
_bytebyte
_longlong
_shortshort
_intint
_integerint
_doubledouble
_floatfloat
_booleanboolean
stringString
byteByte
longLong
shortShort
intInteger
integerInteger
doubleDouble
floatFloat
booleanBoolean
dateDate
decimalBigDecimal
bigdecimalBigDecimal

##5、类型处理器(typeHandlers)

mybatis中通过typeHandlers完成jdbc类型和java类型的转换。通常情况下,mybatis提供的类型处理器满足日常需要,不需要自定义。mybatis支持类型处理器:

类型处理器Java类型JDBC类型
BooleanTypeHandlerBoolean,boolean任何兼容的布尔值
ByteTypeHandlerByte,byte任何兼容的数字或字节类型
ShortTypeHandlerShort,short任何兼容的数字或短整型
IntegerTypeHandlerInteger,int任何兼容的数字和整型
LongTypeHandlerLong,long任何兼容的数字或长整型
FloatTypeHandlerFloat,float任何兼容的数字或单精度浮点型
DoubleTypeHandlerDouble,double任何兼容的数字或双精度浮点型
BigDecimalTypeHandlerBigDecimal任何兼容的数字或十进制小数类型
StringTypeHandlerStringCHAR和VARCHAR类型
ClobTypeHandlerStringCLOB和LONGVARCHAR类型
NStringTypeHandlerStringNVARCHAR和NCHAR类型
NClobTypeHandlerStringNCLOB类型
ByteArrayTypeHandlerbyte[]任何兼容的字节流类型
BlobTypeHandlerbyte[]BLOB和LONGVARBINARY类型
DateTypeHandlerDate(java.util)TIMESTAMP类型
DateOnlyTypeHandlerDate(java.util)DATE类型
TimeOnlyTypeHandlerDate(java.util)TIME类型
SqlTimestampTypeHandlerTimestamp(java.sql)TIMESTAMP类型
SqlDateTypeHandlerDate(java.sql)DATE类型
SqlTimeTypeHandlerTime(java.sql)TIME类型
ObjectTypeHandler任意其他或未指定类型
EnumTypeHandlerEnumeration类型VARCHAR-任何兼容的字符串类型,作为代码存储(而不是索引)。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值