八十五、MyBatis 配置文件

文章目录

主配置文件

dataSource标签

dataSource类型

dataSource配置

事务

使用数据库属性配置文件

typeAliases(类型别名)

mappers(映射器)


主配置文件

之前项目中使用的 mybatis.xml 是主配置文件。

主配置文件特点:

1、xml 文件,需要在头部使用约束文件

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

2、根元素,<configuration>

3、主要内容包括:

  • 定义别名
  • 数据源
  • mapper文件

dataSource标签

Mybatis 中访问数据库,可以连接池技术,但它采用的是自己的连接池技术。 在 Mybatis 的 mybatis.xml 配置文件中,通过<dataSource type="pooled">来实现 Mybatis 中连接池的配置。

dataSource类型

上图看出 Mybatis 将数据源分为三类:

  1. UNPOOLED 不使用连接池的数据源
  2. POOLED 使用连接池的数据源
  3. JNDI 使用 JNDI 实现的数据源

其中 UNPOOLED ,POOLED 数据源实现了 javax.sq.DataSource 接口, JNDI 和前面两个实现方式不同,了解即可。

dataSource配置

在 MyBatis.xml 主配置文件,配置 dataSource:

<dataSource type="POOLED">
 <!--连接数据库的四个要素--> 
 <property name="driver" value="com.mysql.jdbc.Driver"/>
 <property name="url" 
value="jdbc:mysql://localhost:3306/ssm?charset=utf-8"/>
 <property name="username" value="root"/>
 <property name="password" value="123456"/>
</dataSource> 

MyBatis 在初始化时,根据的 type 属性来创建相应类型的的 数据源 DataSource,即:

  • type=”POOLED”:MyBatis 会创建 PooledDataSource 实例
  • type=”UNPOOLED” : MyBatis 会创建 UnpooledDataSource 实例
  • type=”JNDI”:MyBatis 会从 JNDI 服务上查找 DataSource 实例,然后返回使用

事务

(1) 默认需要手动提交事务

Mybatis 框架是对 JDBC 的封装,所以 Mybatis 框架的事务控制方式,本 身也是用 JDBC 的 Connection 对象的 commit(), rollback() .

Connection 对象的 setAutoCommit()方法来设置事务提交方式的。自动提交和手工提交、

<transactionManager type="JDBC"/>

该标签用于指定 MyBatis 所使用的事务管理器。MyBatis 支持两种事务管 理器类型:JDBC 与 MANAGED。

JDBC:使用 JDBC 的事务管理机制。即,通过 Connection 的 commit() 方法提交,通过 rollback()方法回滚。但默认情况下,MyBatis 将自动提 交功能关闭了,改为了手动提交。即程序中需要显式的对事务进行提交或回滚。从日志的输出信息中可以看到。

 MANAGED:由容器来管理事务的整个生命周期(如 Spring 容器)。

(2) 自动提交事务

设置自动提交的方式,factory 的 openSession() 分为有参数和无参数的。

 有参数为 true,使用自动提交,可以修改 MyBatisUtil 的 getSqlSession()方法。

session = factory.openSession(true);
再执行 insert 操作,无需执行 session.commit(),事务是自动提交的

使用数据库属性配置文件

为了方便对数据库连接的管理,DB 连接四要素数据一般都是存放在一个专门 的属性文件中的。MyBatis 主配置文件需要从这个属性文件中读取这些数据。 步骤:

(1) 在 classpath 路径下,创建 properties 文件

在 resources 目录创建 jdbc.properties 文件,文件名称自定义:

 (2) 使用 properties 标签

修改主配置文件,文件开始位置加入:

 (3) 使用 key 指定值

<dataSource type="POOLED">
 <!--使用 properties 文件: 语法 ${key}--> 
 <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>

typeAliases(类型别名)

Mybatis 支持默认别名,我们也可以采用自定义别名方式来开发,主要使用在<select  resultType="别名"> 

mybatis.xml 主配置文件定义别名:

<typeAliases>
 <!-- 
 定义单个类型的别名 
 type:类型的全限定名称 
 alias:自定义别名 
 --> 
 <typeAlias type="com.bjpowernode.domain.Student" alias="mystudent"/>
 <!-- 
 批量定义别名,扫描整个包下的类,别名为类名(首字母大写或小写都
可以) 
 name:包名 
 --> 
 <package name="com.bjpowernode.domain"/>
 <package name="...其他包"/>
</typeAliases>

mapper.xml 文件,使用别名表示类型:

<select id="selectStudents" resultType="mystudent"> 
 select id,name,email,age from student
</select> 

mappers(映射器)

(1)<mapper resource=" " />

使用相对于类路径的资源,从 classpath 路径查找文件

例如:

<mapper resource="com/bjpowernode/dao/StudentDao.xml" /> 

(2)<package name=""/>

指定包下的所有 Dao 接口

例如:

<package name="com.bjpowernode.dao"/>

注意:此种方法要求 Dao 接口名称和 mapper 映射文件名称相同,且在同一 个目录中。


猜你喜欢

转载自blog.csdn.net/m0_54925305/article/details/123693538