MyBatis学习笔记-配置解析
-
mybatis-config.xml
-
MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属性信息。
properties(属性) settings(设置) typeAliases(类型别名) typeHandlers(类型处理器) objectFactory(对象工厂) plugins(插件) environments(环境配置) environment(环境变量) transactionManager(事务管理器) dataSource(数据源) databaseIdProvider(数据库厂商标识) mappers(映射器)
环境配置(Environments)
MyBatis 可以配置成适应多种环境
但是:不论配置多少个环境,每个SqlSessionFactory实例只能选择一种环境
事务管理器(transactionManager)
在 MyBatis 中有两种类型的事务管理器(也就是 type="[JDBC|MANAGED]"):
- JDBC – 这个配置直接使用了 JDBC 的提交和回滚设施,它依赖从数据源获得的连接来管理事务作用域。
- MANAGED(了解) – 这个配置几乎没做什么。它从不提交或回滚一个连接,而是让容器来管理事务的整个生命周期(比如 JEE 应用服务器的上下文)。 默认情况下它会关闭连接。然而一些容器并不希望连接被关闭,因此需要将 closeConnection 属性设置为 false 来阻止默认的关闭行为。
- 注意:如果正在使用 Spring + MyBatis,则没有必要配置事务管理器,因为 Spring 模块会使用自带的管理器来覆盖前面的配置。
数据源(dataSource)
dataSource 元素使用标准的 JDBC 数据源接口来配置 JDBC 连接对象的资源。
-
UNPOOLED– 这个数据源的实现会每次请求时打开和关闭连接。
-
POOLED– 这种数据源的实现利用“池”的概念将 JDBC 连接对象组织起来,避免了创建新的连接实例时所必需的初始化和认证时间。
-
JNDI – 这个数据源实现是为了能在如 EJB 或应用服务器这类容器中使用,容器可以集中或在外部配置数据源,然后放置一个 JNDI 上下文的数据源引用。
…详见官网(https://mybatis.org/mybatis-3/zh/configuration.html#environments)
Mybatis默认的事务管理器就是JDBC,连接池:POOLED
属性(Properties)
我们可以通过properties属性来实现引用配置文件
<!--引入外部配置文件-->
<properties resource="db.properties"/>
<!--当然也可以自己添加属性-->
<properties resource="db.properties">
<property name="username" value="root"/>
<property name="password" value="159753"/>
</properties>
- 可以直接引入外部文件
- 可以在其中增加一些属性配置
- 如果两个文件有同一字段,优先使用外部配置文件
类型别名(typeAliases)
- 类型别名可为 Java 类型设置一个缩写名字。
- 它仅用于 XML 配置,意在降低冗余的全限定类名书写。
<typeAliases>
<typeAlias type="com.alb.pojo.User" alias="User"/>
</typeAliases>
- 也可以指定一个包名,MyBatis 会在包名下面搜索需要的 Java Bean,这种情况下,默认别名为该类的类名,但首字母小写
<typeAliases>
<package name="com.alb.pojo"/>
</typeAliases>
注意:扫描包的情况下可以通过注解去更改类的别名(@Alias("…"))
若实体类较少时,可以使用第一种方式
若实体类较多时,可以使用第二种方式
第一种可以自行设置别名,但第二种需通过注解设置
设置(settings)
映射器(mappers)
MapperRegistry: 注册绑定我们的Mapper文件
方式一:[推荐]
<mappers>
<mapper resource="com/alb/dao/UserMapper.xml"></mapper>
</mappers>
方式二:使用class文件绑定注册
<mappers>
<mapper class="com.alb.dao.UserMapper"/>
</mappers>
方式三:使用扫描包进行注册
<mappers>
<package name="com.alb.dao"/>
</mappers>
方式二、三注意:
- 接口和它的Mapper配置文件必须同名
- 接口和它的Mapper配置文件必须在同一个包下