《Java EE 互联网轻量级框架整合开发——SSM框架和Redis实现》 第4章MyBatis配置

4.1 概述

配置文件所有元素如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration><!-- 配置 -->
	<properties/><!-- 属性 -->
	<settings/><!-- 设置 -->
	<typeAliases/><!-- 类型命名 -->
	<typeHandlers/><!-- 类型处理器 -->
	<objectFactory/><!-- 对象工厂 -->
	<plugins/><!-- 插件 -->
	<environments><!-- 配置环境 -->
		<environment><!-- 环境变量 -->
			<transactionManager/><!-- 事务管理器 -->
			<dataSource/><!-- 数据源 -->
		</environment>
	</environments>
	<databaseIdProvider/><!-- 数据库厂商标识 -->
	<mappers/><!-- 映射器 -->
</configuration>

注意:

  • MyBatis配置项的顺序不能颠倒,否则发生异常
  • 常用内容:
    • properties
    • settings
    • typeAliases
    • typeHandler
    • plugin
    • environments
    • mapper

4.2 properties 属性

properties属性可以给系统配置一些运行参数,可以放在XML文件或者properties文件中
不放在Java编码中
使用方式:

  • property 子元素
  • properties 文件
  • 程序代码传递
4.2.1 property 子元素
<properties>
	<property name="database.driver" value="com.mysql.jdbc.Driver"/>
	<property name="database.url" value="jdbc:mysql://localhost:3306/ssm"/>
	<property name="database.username" value="root"/>
	<property name="database.password" value="root123"/>
</properties>
<?xml version="1.0" encoding="UTF-8"?>
<properties>
	<property name="database.driver" value="com.mysql.jdbc.Driver"/>
	<property name="database.url" value="jdbc:mysql://localhost:3306/ssm"/>
	<property name="database.username" value="root"/>
	<property name="database.password" value="root123"/>
</properties>

<environments default="development">
	<environment id="development">
		<transactionManager type="JDBC"/>
		<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>
4.2.2 使用properties文件

在MyBatis中通过 properties 的属性 resource来引入properties文件

<prpperties resource="jdbc.properties"/>

也可以按${database.username}的方法引入properties文件的属性参数到MyBatis配置文件中。这个时候通过维护properties文件就可以维护我们的配置内容了

4.2.3 使用程序传递方法传递参数

可以对用户名和密码进行解密和加密

settings 设置

settings设置可以深刻影响MyBatis底层的运行,在大部分情况下使用默认值即可
常用配置包括:

  • 关于缓存的cacheEnabled
  • 关于级联的lazyLoadingEnabled和aggressiveLazyLoading
  • 关于自动映射的autoMappingBehavior和mapUnderscoreToCamelCase
  • 关于执行器类型的defaultExecutorType

4.4 typeAliases别名

类的全限定名称很长,在MyBatis中允许定义一个简写来代表这个类,使用typeAliases来配置

4.4.1 系统定义别名
4.4.2 自定义别名
  1. 使用配置文件自定义
<typeAliases>
	<typeAlias alias="student" type="com.ssm.chapter4.pojo.Student"/>
</typeAliases>
  1. 扫描方式自定义
<typeAliases>
	<package name="com.ssm.chapter4.pojo"/>
</typeAliases>

这样MyBatis将扫描这个包里的类,将其第一个字母变为小写作为其别名
为防止出现重名,可以使用MyBatis提供的注解@Alias(”别名“)进行区分

4.5 typeHandler 类型转换器

在typeHandler中,分为jdbcType和javaType

  • jdbcType:定义数据库类型
  • javaType:定义Java类型
  • typeHandler作用为承担jdbcType和javaType之间的相互转换
    在大部分情况下哎无须显式地声明jdbcType和javaType
    也可以自动一typeHandler

4.6 ObjectFactory(对象工厂)

当创建结果集时,MyBatis会使用一个对象工厂来完成创建这个结果集实例。在默认的情况下,MyBatis会使用其定义的对象工厂——DefaultObjectFactory来完成对应的工作
MyBatis同样允许注册自定义的ObjectFactory

4.7 插件

4.8 environments(运行环境)

运行环境主要的作用是配置数据库信息,可以配置多个数据库
它下面又分为两个可配置的元素:事务管理器(transactionManager)、数据源(dataSource)
在实际的工作中,大部分情况下会采用Spring对数据源和数据库的事务进行管理

4.8.1 transactionManager(事务管理器)

MyBatis提供两个实现类:

  • jdbcTransaction
  • ManagedTransaction
    于是可以把事务管理器配置成为以下两种方式:
<transactionManager type="JDBC"/>
<transactionManager type="MANAGED"/>
  • JDBC以JDBC的方式对数据库的提交和回滚进行操作
  • MANAGED的提交和回滚方法不用任何操作,而是把事务交给容器处理,默认下,会关闭连接
4.8.2 environment 数据源环境

environment主要作用是配置数据源
3种配置方式:

<dataSource type="UNPOOLED">
<dataSource type="POOLED">
<dataSource type="JNDI">
  1. UNPOOLED
    采用非数据库池的管理方式,每次请求都会打开一个新的数据库连接,所以创建比较慢
    在一些对性能没有很高的要求的场合可以使用它
  2. POOLED
    数据源POOLED利用“池”的概念将JDBC的Connection对象组织起来,开始会有一些空置,并且已经连接号的数据库连接,请求时,无需再建立和验证,省去了创建新的连接实例时所必需的初始化和认证时间
    还控制最大连接诶书,避免过多连接导致系统瓶颈
  3. JNDI

4.9 dataBaseIdProvider 数据库厂商标识

主要是支持多种不同厂商的数据库

<databaseIdProvider type="DB_VENDOR">
	<property name="Oracle" value="oracle"/>
	<property name="MySQL" value="mysql"/>
	<property name="DB2" value="db2"/>
</databaseIdProvider>

4.10 引入映射器的方法

映射器定义命名空间(namespace)的方法,命名空间对应的是一个接口的全路径,而不是实现类

  1. 用文件路径引入映射器
<mappers>
	<mapper resource="com/ssm/chapter4/mapper/studentMapper.xml"/>
</mappers>
  1. 用包名引入映射器
<mappers>
	<package name="com.ssm.chapter4.mapper"/>
</mappers>
  1. 用类注册引入映射器
<mappers>
	<mapper class="com.ssm.chapter4.mapper.studentMapper"/>
</mappers>
  1. 用userMapper.xml引入映射器
<mappers>
	<mapper url="file:///var/mappers/ssm/chapter4/mapper/studentMapper.xml"/>
</mappers>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值