MyBatis核心配置文件层级关系
-
configuration配置
-
properties属性
-
settings设置
-
typeAliases类型别名
-
typeHandlers类型处理器
-
objectFactory对象工厂
-
plugins插件
-
environments环境
environrnent 环境变量
transactionManager事务管理器
dataSource数据源
-
databaseldProvider数据库厂商标识
-
mappers映射器
核心配置文件
<?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> <environments default="development">指定默认的环境名称 <environment id="development"> 指定当前环境名称 <transactionManager type="JDBC"/>指定事务管理类型是JDBC <dataSource type="POOLED"> 指定当前数据源类型是连接池 配置的数据库基本参数 <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/> <property name="username" value="root"/> <property name="password" value="a1988121188"/> </dataSource> </environment> </environments> <mappers> <mapper resource="org/DAO/User-mapper.xml"/> </mappers> </configuration>
environments环境
<environments default="development">指定默认的环境名称 <environment id="development"> 指定当前环境名称
id="development"指向的是default="development" , 改成 id="abc"指向的是default="abc",当前环境不变
transactionManager事务管理器
其中,事务管理器(transactionManager)类型有两种:
-
JDBC(常用):这个配置就是直接使用了JDBC的提交和回滚设置,它依赖于从数据源得到的连接来管理事务作用域。
-
MANAGED:这个配置几乎没做什么。它从来不提交或回滚一个连接,而是让容器来管理事务的整个生命周期(比如JE应用服务器的上下文)。默认情况下它会关闭连接,然而一些容器并不希望这样,因此需要将closeConnection属性设置为false来阻止它默认的关闭行为。
dataSource 数据源
其中,数据源(dataSource)类型有三种: UNPOOLED:这个数据源的实现只是每次被请求时打开和关闭连接。 POOLED:这种数据源的实现利用“池”的概念将JDBC连接对象组织起来。 JNDI:这个数据源的实现是为了能在如EJB或应用服务器这类容器中使用,容器可以集中或在外部配置数据源,然后放置一个JNDI上下文的引用。
mappers
<mappers> <mapper resource="org/DAO/User-mapper.xml"/> </mappers>
该标签的作用是加载映射的,加载方式有如下几种:
-
使用相对于类路径的资源引用(常用)
例如:<mapper resource="org/mybatis/builder/AuthorMapper.xml"/>·
-
使用完全限定资源定位符(URL),例如:mapperurl="file:///var/mappers/AuthorMapper.xml"/·
-
使用映射器接口实现类的完全限定类名
例如: <mapper class="org.mybatis.builder.AuthorMapper"/>
-
将包内的映射器接口实现全部主册为映射器
例如: <package name="org.mybatis.builder"/>
typeAliases(定义别名)
通常情况下 mybatis 已经把基础数据类型 和常用引用类型 自动定义好了别名 例如Interger 的别名是int
<typeAliases> <typeAlias type="org.pojo.User" alias="user"></typeAlias> </typeAliases>
把User这个实体类 起个别名 user 这样更方便使用
如果随意在配置文件里面定义别名会触发这个bug,可以看到它是因为配置的顺序不对引发的bug
它要求定义别名要在properties之后 ,带?号的参数代表可写可不写