properties 属性
三种方式使用:
- property 子元素
- properties 文件
- 程序代码传递
settings 设置
<settings>
<setting name="cacheEnabled" value="true"/>
...
</settings>
typeAliases 别名
别名不区分大小写
- 系统别名
- 自定义别名
自定义别名
typeAliases 为mapper映射文件中的 POJO(domain)起别名
方式一:为指定的类分别起别名,别名的命名由我们自己来决定
type:要为哪个 POJO(domain)起别名,填写【包.类名称】
alias:别名
<typeAliases>
<typeAlias alias="role" type="com.mybatis_04.pojo.Role"/>
</typeAliases>
方式二:使用package标签批量起别名,别名是MyBatis默认取好的,别名为类名首字母小写
name:指定一个包结构,表示在该包下,所有的 POJO(domain)自动起别名
缺点:容易出现重名,此时应当在不同包下的同名POJO类上使用注解 @Alias("别名")
<typeAliases>
<package name="com.mybatis_04.pojo"/>
</typeAliases>
environments 运行环境
environments 可以配置多个数据库,一般配置一个即可。包含两个可配置元素:transactionManager和 dataSource
environment 作用:配置数据库
<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>
-
transactionManager
在MyBatis 中,transactionManager 提供了两个实现类(JdbcTransaction 和 ManagedTransaction ),它们需要实现接口 Transaction 。
package org.apache.ibatis.transaction;
import java.sql.Connection;
import java.sql.SQLException;
public interface Transaction {
Connection getConnection() throws SQLException;
void commit() throws SQLException;
void rollback() throws SQLException;
void close() throws SQLException;
Integer getTimeout() throws SQLException;
}
JDBC: 使用JdbcTransactionFactory生成的JdbcTransaction对象实现,它是以JDBC的方式对数据库的提交和回滚进行操作。
MANAGED: 使用ManagedTransactionFactory 生成的ManagedTransaction对象实现,MyBatis自己不负责控制事务,而是让容器来处理事务。在默认情况下,MyBatis会关闭连接。阻止默认关闭可以将closeConnection属性设置为false。
<transactionManager type="JDBC"/>
<transactionManager type="MANAGED"/>
- dataSource
UNPOOLED: 采用非数据库池的管理方式,每次请求会打开一个新的数据库连接。速度慢,对简单应用程序是一个很好的选择。
POOLED: 采用连接池省去创建新的连接实例时必要的初始连接和认证时间。它还控制最大连接数,以避免过多连接导致系统瓶颈。
JNDI: 这个数据源的实现是为了使用如Spring或应用服务器这类的容器。容器可以集中或在外部配置数据源,然后放置一个JNDI上下文引用,MyBatis通过JNDI获取数据源。
<dataSource type="UNPOOLED">
<dataSource type="POOLED">
<dataSource type="JNDI">
mapper 映射器
mapper:用来在核心配置文件中注册和加载映射文件
- ① 使用 resource 属性,指定 mapper 文件路径引入映射器
<mappers>
<mapper resource="com/mybatis_04/mapper/RoleMapper.xml"/>-->
</mappers>
- ② 使用 package 属性批量注册,指向 mapper(dao) 的包,表示该包下所有的 mapper 映射文件自动注册
<mappers>
<package name="com.mybatis_04.mapper"/>
</mappers>
- ③ 使用 class 属性,找到 mapper(dao) 层接口的全路径
<mappers>
<mapper class="com.mybatis_04.mapper.RoleMapper"/>
</mappers>
- ④ 使用 url ,暂不赘述
完整的 mybatis-config.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">
<configuration>
<properties resource="jdbc.properties" />
<!-- 效果不明显,一般不用settings来配置 -->
<!--settings>
<setting name="" value=""/>
</settings-->
<!--
<typeAliases>为mapper映射文件中的 POJO(domain)起别名
方式一:为指定的类分别起别名,别名的命名由我们自己来决定
type:要为哪个 POJO(domain)起别名,填写【包.类名称】
alias:别名的名字
方式二:使用package标签批量起别名,别名是MyBatis默认取好的,别名为类名(不区分大小写)
name:指定一个包结构,表示在该包下,所有的 POJO(domain)自动起好了别名
【总结】 在实际项目中,有需要起别名则用批量方式取别名
-->
<typeAliases>
<!--<typeAlias alias="role" type="com.mybatis_04.pojo.Role"/>-->
<!--<package name="com.mybatis_04.pojo"/>-->
</typeAliases>
<environments default="development">
<environment id="development">
<!--
JDBC:使用JdbcTransactionFactory生成的JdbcTransaction对象实现,MyBatis是以JDBC的方式对数据库的提交和回滚进行操作。
MANAGED: ManagedTransactionFactory 生成的ManagedTransaction对象实现的,MyBatis自己不负责控制事务,而是让容器来
处理事务。在默认情况下,MyBatis会关闭连接。阻止默认关闭可以将closeConnection属性设置为false。
-->
<transactionManager type="JDBC"/>
<!--
UNPOOLED:采用非数据库池的管理方式,每次请求会打开一个新的数据库连接。速度慢,对简单应用程序是一个很好的选择。
POOLED:采用连接池省去创建新的连接实例时必要的初始连接和认证时间。它还控制最大连接数,以避免过多连接导致系统瓶颈。
JNDI:这个数据源的实现是为了使用如Spring或应用服务器这类的容器。容器可以集中或在外部配置数据源,然后放置一个JNDI上下文
引用,MyBatis通过JNDI获取数据源。
-->
<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>
<!--
mapper:用来在核心配置文件中注册和加载映射文件
方式一:使用resource属性,指定mapper文件路径引入映射器
方式二:使用package属性批量注册,指向mapper(dao)的包,表示该包下所有的mapper映射文件自动注册
方式三:使用class属性,找到mapper(dao)层接口的全路径
方法四:使用url,暂不赘述
总结:【在实际项目中,一定使用批量注册mapper映射文件】
-->
<mappers>
<!--<mapper resource="com/mybatis_04/mapper/RoleMapper.xml"/>-->
<package name="com.mybatis_04.mapper"/>
<!--<mapper class="com.mybatis_04.mapper.RoleMapper"/>-->
</mappers>
</configuration>