(三)Mybatis当中mybatis-config.xml配置讲解

这篇文章主要讲述mybatis-config.xml当中的一些配置用法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。

properties

1、property配置属性

这些属性都是可外部配置且可动态替换的,既可以在典型的 Java 属性文件中配置,亦可通过 properties 元素的子元素来传递

<properties> 
	<property name="jdbc.driver" value="com.mysql.jdbc.Driver"/> 
	<property name="jdbc.url" value="jdbc:mysql://localhost:3306/test"/> 
	<property name="jdbc.username" value="root"/> 
	<property name="jdbc.password" value="root"/>
</properties>
  
<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>
</environments>

2、引入外部资源的方法

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

${key值}调用

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

dbconfig.properties文件

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

settings

这是 MyBatis 中极为重要的调整设置,它们会改变MyBatis 的运行时行为
name:设置项名
value:设置项取值

<!-- 全局参数 -->
<settings>
    <!-- 使全局的映射器启用或禁用缓存。 -->
    <setting name="cacheEnabled" value="true"/>
    <!-- 全局启用或禁用延迟加载。当禁用时,所有关联对象都会即时加载。 -->
    <setting name="lazyLoadingEnabled" value="true"/>
    <!-- 当启用时,有延迟加载属性的对象在被调用时将会完全加载任意属性。否则,每种属性将会按需要加载。 -->
    <setting name="aggressiveLazyLoading" value="true"/>
    <!-- 是否允许单条sql 返回多个数据集  (取决于驱动的兼容性) default:true -->
    <setting name="multipleResultSetsEnabled" value="true"/>
    <!-- 是否可以使用列的别名 (取决于驱动的兼容性) default:true -->
    <setting name="useColumnLabel" value="true"/>
    <!-- 允许JDBC 生成主键。需要驱动器支持。如果设为了true,这个设置将强制使用被生成的主键,有一些驱动器不兼容不过仍然可以执行。  default:false  -->
    <setting name="useGeneratedKeys" value="true"/>
    <!-- 指定 MyBatis 如何自动映射 数据基表的列 NONE:不隐射 PARTIAL:部分  FULL:全部  -->
    <setting name="autoMappingBehavior" value="PARTIAL"/>
    <!-- 这是默认的执行类型  (SIMPLE: 简单; REUSE: 执行器可能重复使用prepared statements语句;BATCH: 执行器可以重复执行语句和批量更新)  -->
    <setting name="defaultExecutorType" value="SIMPLE"/>
    <!-- 使用驼峰命名法转换字段。 -->
    <setting name="mapUnderscoreToCamelCase" value="true"/>
    <!-- 设置本地缓存范围 session:就会有数据的共享  statement:语句范围 (这样就不会有数据的共享 ) defalut:session -->
    <setting name="localCacheScope" value="SESSION"/>
    <!-- 设置但JDBC类型为空时,某些驱动程序 要指定值,default:OTHER,插入空值时不需要指定类型 -->
    <setting name="jdbcTypeForNull" value="NULL"/>
</settings>

在这里插入图片描述

typeAliases

类型别名只是Java类型的较短名称。 它只与XML配置相关,只是为了减少完全限定类名的冗余类型而存在。

1、typeAlias单独指定

<typeAliases>
	<!-- 1、typeAlias:为某个java类型起别名
			type:指定要起别名的类型全类名;默认别名就是类名小写;employee
			alias:指定新的别名
	 -->
	<typeAlias type="com.gzl.mybatis.bean.Employee" alias="emp"/>
</typeAliases>

指定完别名之后,resultType就不用写全类名了

<select id="getEmpById" resultType="test">
	select * from student where id = #{id}
</select>

2、批量指定别名

为当前包以及下面所有的后代包的每一个类都起一个默认别名(类名小写)

<typeAliases>
	<package name="com.gzl.mybatis.bean"/>
</typeAliases>

批量起别名的情况下,使用@Alias注解为某个类型指定新的别名,在类上添加注解即可

@Alias("author")
public class Author {
 ...
}

typeHandlers(类型处理器)

mybatis中通过typeHandlers完成jdbc类型和java类型的转换。
通常情况下,mybatis提供的类型处理器满足日常需要,不需要自定义,此篇博客不重点讲解这个。

plugins插件

此篇不重点简介。
插件是MyBatis提供的一个非常强大的机制,我们可以通过插件来修改MyBatis的一些核心行为。插件通过动态代理机制,可以介入四大对象的任何一个方法的执行。后面会有专门的章节我们来介绍mybatis运行原理以及插件
Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)
ParameterHandler (getParameterObject, setParameters)
ResultSetHandler (handleResultSets, handleOutputParameters)
StatementHandler (prepare, parameterize, batch, update, query)

environments

MyBatis可以配置多个环境。 可以将SQL映射应用到多个数据库中,虽然可以配置多个环境,但只能在每个Sql Session Factory实例中选择一个,如果要连接到两个数据库,需要创建两个Sql SessionFactory实例

default指定使用某种环境。可以达到快速切换环境

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

在xml当中我们需要判断链接的是oracle还是mysql的时候,可以用_databaseId这个参数来判断,这是mybatis给我们提供好的。前提是配置了上面的。

<if test="_databaseId=='mysql'">

transactionManager (事务管理)

一般的话有两种JDBC和MANAGED

<transactionManager type="MANAGED">
 	<property name="closeConnection" value="false"/>
</transactionManager>

如果您计划使用Spring,则不需要配置任何事务管理器,因为Spring模块将设置自己的一个,覆盖任何先前设置的配置

dataSource(数据源)

type: UNPOOLED | POOLED | JNDI | 自定义
– UNPOOLED:不使用连接池,UnpooledDataSourceFactory
– POOLED:使用连接池, PooledDataSourceFactory
– JNDI: 在EJB 或应用服务器这类容器中查找指定的数据源
– 自定义:实现DataSourceFactory接口,定义数据源的获取方式。

<dataSource type="POOLED">

实际开发中我们使用Spring管理数据源,并进行事务控制的配置来覆盖上述配置

databaseIdProvider

MyBatis 可以根据不同的数据库厂商执行不同的语句

<databaseIdProvider type="DB_VENDOR">
	<!-- 为不同的数据库厂商起别名 -->
	<property name="MySQL" value="mysql"/>
	<property name="Oracle" value="oracle"/>
	<property name="SQL Server" value="sqlserver"/>
</databaseIdProvider>

Type: DB_VENDOR,使用MyBatis提供的VendorDatabaseIdProvider解析数据库
厂商标识。也可以实现DatabaseIdProvider接口来自定义。 •
Property-name:数据库厂商标识
Property-value:为标识起一个别名,方便SQL语句使用databaseId属性引用

<select id="getEmpById" resultType="com.gzl.mybatis.bean.Employee"
		databaseId="mysql">
		select * from student where id = #{id}
</select>

mapper

只有配置了 mappers 信息后,MyBatis 才知道去哪里加载 Mapper 映射文件

1.接口所在包

这种方式要求SQL映射文件名必须和接口名相同并且在同一目录下

<mappers>
	<package name="com.atguigu.mybatis.dao"/>
</mappers>

2、相对路径配置

<mappers>
	<mapper resource="com/gzl/mybatis/dao/EmployeeMapper.xml"/>
</mappers>

3.类注册引入

mapper标签,通过class属性指定mapper接口名称,
此时对应的映射文件必须与接口位于同一路径下,并且名称相同

<mappers>
		<mapper class="com.gzl.mybatis.dao.EmployeeMapper"/>
</mappers>

注意

xml配置必须按照顺序来配置。可以不配置但是配置一定得按顺序来。
1、properties
2、settings
3、typeAliases
4、typeHandlers
5、objectFactory
6、plugins
7、environments
8、environment
9、transactionManager
10、dataSource
11、databaseIdProvider
12、mappers

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

怪 咖@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值