mybatis-config.xml配置

学习一个框架,必须详细的了解其配置文件,并经过必定的源码分析才能更灵活的运用,根据本身的项目实现一些特殊的、自定义的功能,下面详细看看Mybatis的全局配置文件 java

<?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">

<!-- 配置里面用到大写的字符串常量,都在Mybatis在给特定的类启的别名,能够在org.apache.ibatis.session.Configuration的构造函数中找到 -->
<configuration>
	<!-- properties标签:定义外部配置文件,好比数据库配置
		resource:类路径下的配置文件
		url:网络路径或者磁盘路径下的配置文件
	 -->
	<properties resource="jdbc.properties" ></properties>
	<!-- 
		该标签包含了不少重要的配置,好比缓存等
	 -->
	<settings>
		<!-- mapUnderScoreToCamelCase:数据库字段中的下划线加其后的第一字母读取出来后去掉下划线并字母大写,如:first_name变成firstName -->
		<setting name="mapUnderscoreToCamelCase" value="true" />
	</settings>
	<!-- 类型与别名映射 -->
	<typeAliases>
		<!-- package和typeAlias标签只能同时存在一个 -->
		<!-- package标签:将包及其子包下面全部的类所有映射为类名小写的别名,若是存在冲突的别名,在java类中使用@alias注解换一个别名 -->
		<!-- <package name=""/> -->
		
		<!-- typeAlias标签:将一个类名映射为别名 -->
		<typeAlias type="com.jv.bean.Employee" alias="employee"/>
	</typeAliases>
	<!-- 
		environments:环境们,Mybatis能够配置多种环境 ,default属性指定使用某种环境。能够达到快速切换环境。
		好比同一套代码的开发环境、测试环境、生产环境,甚至还有不一样类型的数据库
		下面的配置没有针对使用场景来配置,而是为了测试Mybatis对不一样类型数据库支持,配置了两种场景,分别是Oracle和MySQL	
	-->
	<environments default="dev_oracle">
		<!-- 
			environment:配置一个具体的环境信息;必须有两个标签;id表明当前环境的惟一标识
		-->
		<environment id="dev_mysql">
			<!-- 
				transactionManager:事务管理器;
					type:事务管理器的类型;JDBC(JdbcTransactionFactory)|MANAGED(ManagedTransactionFactory)
				
				自定义事务管理器:实现TransactionFactory接口.type指定为全类名
			-->
			<transactionManager type="JDBC" />
			<!-- 
				dataSource:数据源;
					type:数据源类型;UNPOOLED(UnpooledDataSourceFactory)
									|POOLED(PooledDataSourceFactory)
									|JNDI(JndiDataSourceFactory)
					自定义数据源:实现DataSourceFactory接口,type是全类名
			 -->
			<dataSource type="POOLED">
				<property name="driver" value="${jdbc.driver}" />
				<property name="url" value="${jdbc.url}" />
				<property name="username" value="${jdbc.username}" />
				<property name="password" value="${jdbc.password}" />
			</dataSource>
		</environment>
		
		<!-- 这个环境配置为oracle -->
		<environment id="dev_oracle">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="${ora.driver}" />
				<property name="url" value="${ora.url}" />
				<property name="username" value="${ora.username}" />
				<property name="password" value="${ora.password}" />
			</dataSource>
		</environment>
	</environments>
	
	<!-- 
		databaseIdProvider:支持多数据库厂商的;
		 	type="DB_VENDOR":VendorDatabaseIdProvider是DB_VENDOR映射的实现类
		 		做用:就是获得数据库厂商的标识,调用getDatabaseProductName()获得数据库名称,如Oracle(MySQL,SQL Server等其余名字)而后和配置中property比对,拿
		 		到oracle,在与sql映射文件中<select>标签中的databaseid中的值匹配,Mybatis就能根据数据库厂商标识来执行不一样的sql;
	-->
	<databaseIdProvider type="DB_VENDOR">
		<property name="MySQL" value="mysql"/>
		<property name="Oracle" value="oracle"/>
	</databaseIdProvider>
	<!-- 将配置的SQL映射文件配置到全局配置文件中 -->
	<mappers>
		<!-- 
			注册一个SQL映射文件到全局配置文件中 
			1.注册配置文件
				resource:类路径下的配置文件
				url:网络路径或者磁盘路径下的配置文件
		-->
		<mapper resource="EmployeeMapper.xml" />
		<!--  
			注册接口
			1.必须将SQL映射配置文件放到接口类相同的目录,这样Mybatis才能根据Mapper的名字找到对应的SQL映射文件
			或者
			2.不使用SQL映射文件,在类中使用注解把SQL写到对应方法上
			如:
				public interface EmployeeMapperAnnotation{
					@select("select * from employee where id = #{id}")
					public Employee getEmployeeById(Integer id);
				}
		-->
		<mapper class="com.jv.dao.EmployeeMapper" />
		
		
		<!--  
			批量注册,为了方便维护,一般开发人员喜欢讲配置文件和类分开,可是分开了就不能使用该功能,有一个比较讨巧的作法
			在新建的配置文件根目录下,建立一个和类同样的目录,最终经过编译打包后配置文件和CLASS文件是在同一个目录的
		-->
		<package name="com.jv.dao.batch"/>
	</mappers>
	
</configuration>

由于mybatis常常和其余框架整合,所以在全局配置文件里面用到<properties>和<datasource>标签概率不多mysql

<settings>标签里面包含了不少重要的属性,在不断学习中会陆续介绍,最后会单独列一篇作汇总sql

<typeAliases>标签的配置很实用,好比常常实用的实体类若是有更新位置或者类名,那么使用别名就像常量同样方便,可是它也有很差的一面,即在阅读代码的时候,若是想经过mapper配置文件快速定位到类,就好比去全局配置文件翻具体的类。数据库

另外:别名千万不要和Mybatis内定的别名冲突,即基本类型和经常使用类型的:apache

相关文章
相关标签/搜索