MyBatis_02_config

目录

1、properties:引入外部properties配置文件

1.1、主配置文件

1.2、dbconfig.properties

2、settings:修改MyBatis在运行时的行为方式。

3、typeAliases:java type别名设置

4、typeHandlers:类型处理器

4.1、类型处理器

4.2、日期类型的处理

4.3、自定义类型处理器

5、objectFactory:对象工厂

6、plugins:插件

7、environments:环境

8、databaseIdProvider:数据库厂商标识

9、mappers:映射器


1、properties:引入外部properties配置文件

1.1、主配置文件

<properties resource="dbconfig.properties"></properties>

<environments default="development">
	<environment id="development">
		<transactionManager type="JDBC"/>
		<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>
</environments>

1.2、dbconfig.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=root
jdbc.password=123456

orcl.driver=oracle.jdbc.OracleDriver
orcl.url=jdbc:oracle:thin:@localhost:1521:orcl
orcl.username=scott
orcl.password=123456

2、settings:修改MyBatis在运行时的行为方式。

<!-- 
settings包含很多重要的设置项
    setting:用来设置每一个设置项
        name:设置项名
        value:设置项取值
-->
<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="autoMappingUnknownColumnBehavior" value="WARNING"/>
    <setting name="defaultExecutorType" value="SIMPLE"/>
    <setting name="defaultStatementTimeout" value="25"/>
    <setting name="defaultFetchSize" value="100"/>
    <setting name="safeRowBoundsEnabled" value="false"/>
    <!--数据库字段a_column 自动映射到 对象属性aColumn-->
    <setting name="mapUnderscoreToCamelCase" value="false"/>
    <setting name="localCacheScope" value="SESSION"/>
    <setting name="jdbcTypeForNull" value="OTHER"/>
    <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
</settings>

3、typeAliases:java type别名设置

<!-- 
3、typeAliases:别名处理器:可以为我们的java类型起别名,别名不区分大小写
-->
<typeAliases>
	<!-- 
	1、typeAlias:为某个java类型起别名
			type:指定要起别名的类型全类名;默认别名就是类名小写;employee
			alias:指定新的别名
	-->
	<typeAlias type="com.jxx.mybatis.bean.Employee" alias="emp"/>

	<!-- 
	2、package:为某个包下的所有类批量起别名
			name:指定包名(为当前包以及下面所有的后代包的每一个类都起一个默认别名(类名小写),)
        2.1、批量起别名的情况下,使用@Alias注解为某个类型指定新的别名
	-->
	<package name="com.jxx.mybatis.bean"/>
</typeAliases>

4、typeHandlers:类型处理器

4.1、类型处理器

无论是Mybatis在预处理语句(PreparedStatement)设置一个参数时,还是从结果集中取出一个值时,都会使用类型处理器将值转换为合适的类型

Type Handler Java TypesJDBC Types
BooleanTypeHandlerjava.lang.Boolean,booleanAny compatible BOOLEAN

ByteTypeHandler

java.lang.Byte, byte

Any compatible NUMERIC or BYTE

ShortTypeHandler

java.lang.Short, short

Any compatible NUMERIC or SHORT INTEGER
IntegerTypeHandlerjava.lang.Integer, intAny compatible NUMERIC or INTEGER
LongTypeHandlerjava.lang.Long, longAny compatible NUMERIC or LONG INTEGER
FloatTypeHandlerjava.lang.Float, floatAny compatible NUMERIC or FLOAT
DoubleTypeHandlerjava.lang.Double, doubleAny compatible NUMERIC or DOUBLE
BigDecimalTypeHandlerjava.lang.BigDecimalAny compatible NUMERIC or DECIMAL
StringTypeHandlerjava.lang.String

CHAR, VARCHAR

SqlDateTypeHandler

java.sql.Date​​​​

DATE
SqlTimeTypeHandlerjava.sql.TIMETIME
.........

4.2、日期类型的处理

  • JDK1.8实现了JSR310的全部规范
  • 日期处理上,使用mybatis基于 jsr310(Date and Time API)编写的各种日期的时间类型处理器
  • mybatis3.4以后时间类型处理器是自动注册的

4.3、自定义类型处理器

  • 可以重写类型处理器或者创建自己的类型处理器来处理不支持的或者非标准的类型
  • 步骤

①、实现org.apache.ibatis.type.TypeHandler或者继承org.apache.ibatis.type.BaseTypeHandler

②、指定其映射某个JDBC类型

③、在mybatis全局配置中注册

5、objectFactory:对象工厂

 

6、plugins:插件

MyBatis allows you to intercept calls to at certain points within the execution of a mapped statement.By default, MyBatis allows plug-ins to intercept method calls of:

插件是mybatis提供的非常强大的机制,我们可以通过插件修改mybatis的一些核心行为,插件通过动态代理机制,可以介入四大对象的任何一个方法的执行

  • Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)
  • ParameterHandler (getParameterObject, setParameters)
  • ResultSetHandler (handleResultSets, handleOutputParameters)
  • StatementHandler (prepare, parameterize, batch, update, query)
     

7、environments:环境

<!-- 
4、environments:环境们,mybatis可以配置多种环境 ,default指定使用某种环境。可以达到快速切换环境。
	environment:配置一个具体的环境信息;必须有两个标签;id代表当前环境的唯一标识
		transactionManager:事务管理器;
			type:事务管理器的类型;JDBC(JdbcTransactionFactory)|MANAGED(ManagedTransactionFactory)
				  自定义事务管理器:实现TransactionFactory接口,type指定为全类名
		
		dataSource:数据源;
			type:数据源类型:
                           UNPOOLED(UnpooledDataSourceFactory)
						   POOLED(PooledDataSourceFactory)
						   JNDI(JndiDataSourceFactory)
			自定义数据源:
                        实现DataSourceFactory接口,type是全类名
 -->
<environments default="dev_mysql">
	<environment id="dev_mysql">
		<transactionManager type="JDBC"></transactionManager>
		<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>

	<environment id="dev_oracle">
		<transactionManager type="JDBC" />
		<dataSource type="POOLED">
			<property name="driver" value="${orcl.driver}" />
			<property name="url" value="${orcl.url}" />
			<property name="username" value="${orcl.username}" />
			<property name="password" value="${orcl.password}" />
		</dataSource>
	</environment>
</environments>

8、databaseIdProvider:数据库厂商标识

<!-- 5、databaseIdProvider:支持多数据库厂商的;
	 type="DB_VENDOR":VendorDatabaseIdProvider
		作用就是得到数据库厂商的标识(驱动getDatabaseProductName()),mybatis就能根据数据库厂商标识来执行不同的sql;
		MySQL,Oracle,SQL Server,xxxx
  -->
<databaseIdProvider type="DB_VENDOR">
	<!-- 为不同的数据库厂商起别名 -->
	<property name="MySQL" value="mysql"/>
	<property name="Oracle" value="oracle"/>
	<property name="SQL Server" value="sqlserver"/>
</databaseIdProvider>

9、mappers:映射器

<mappers>
	<!-- 
		mapper:注册一个sql映射 
			1、注册配置文件
			    ①、resource:引用类路径下的sql映射文件[mybatis/mapper/EmployeeMapper.xml]
			    ②、url:引用网路路径或者磁盘路径下的sql映射文件[file:///var/mappers/AuthorMapper.xml]
				
			2、注册接口
			class:引用(注册)接口,
				①、有sql映射文件,映射文件名必须和接口同名,并且放在与接口同一目录下;
				②、没有sql映射文件,所有的sql都是利用注解写在接口上;
				推荐:
					比较重要的,复杂的Dao接口我们来写sql映射文件
					不重要,简单的Dao接口为了开发快速可以使用注解;
	-->

    <!--注册配置文件-->
	<mapper resource="EmployeeMapper.xml"/>

    <!--有sql映射文件,映射文件名和接口同名,与接口放同一目录-->
    <!-- <mapper class="com.jxx.mybatis.dao.EmployeeMapper"/> -->

    <!--没有sql映射文件,所有的sql都是利用注解写在接口上-->
	<!-- <mapper class="com.jxx.mybatis.dao.EmployeeMapperAnnotation"/> -->

	<!-- 批量注册: -->
	<!--<package name="com.jxx.mybatis.dao"/> -->
</mappers>
package com.jxx.mybatis.dao;

import com.jxx.mybatis.bean.Employee;
import org.apache.ibatis.annotations.Select;

public interface EmployeeMapperAnnotation {
	
	@Select("select * from tbl_employee where id=#{id}")
	public Employee getEmpById(Integer id);
}

注:标签的顺序按照如下

properties?, settings?, typeAliases?, typeHandlers?, objectFactory?, objectWrapperFactory?, reflectorFactory?, plugins?, environments?, databaseIdProvider?, mappers
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值