Mybatis配置文件属性讲解
2017-06-03 14:24
288 查看
Mybatis配置文件属性讲解
MyBatis 的 XML 配置文件包含了影响 MyBatis 行为甚深的设置和属性信息。 XML 文档 的高层级结构如下:configuration 配置
properties 属性
settings 设置
typeAliases 类型命名
typeHandlers 类型处理器
objectFactory 对象工厂
plugins 插件
environments 环境
environment 环境变量
■ transactionManager 事务管理器
■dataSource 数据源
databaseIdProvider chinese?
mappers 映射器
properties
这些是外部化的, 可替代的属性, 这些属性也可以配置在典型的 Java 属性配置文件中, 或者通过 properties 元素的子元素来传递。例如:<properties resource="org/mybatis/example/config.properties"> <property name="username" value="dev_user"/> <property name="password" value="F2Fa3!33TYyg"/> </properties>
其中的属性就可以在整个配置文件中使用,使用可替换的属性来实现动态配置。比如:
<dataSource type="POOLED"> <property name="driver" value="${driver}"/> <property name="url" value="${url}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> </dataSource>
如果在这些地方,属性多于一个的话,MyBatis 按照如下的顺序加载它们:
•在 properties 元素体内指定的属性首先被读取。
•从类路径下资源或 properties 元素的 属性中加载的属性第二被读取,它会 覆盖已经存在的完全一样的属性。
•作为方法参数传递的属性最后被读取, 它也会覆盖任一已经存在的完全一样的 属性
settings
这些是极其重要的调整, 它们会修改 MyBatis 在运行时的行为方式。 下面这个表格描述 了设置信息,它们的含义和默认值。cacheEnabled
这个配置使全局的映射器启用或禁用 缓存,默认true 。
lazyLoadingEnabled
全局启用或禁用延迟加载。当禁用时, 所有关联对象都会即时加载,默认true 。
defaultStatementTimeout
设置超时时间, 它决定驱动等待一个数 据库响应的时间,默认没有设置。
还有就不一一列举了
typeAliases
类型别名是为 Java 类型命名一个短的名字。 它只和 XML 配置有关, 只用来减少类完全 限定名的多余部分。例如:<typeAliases> <typeAlias alias="Author" type="domain.blog.Author"/> <typeAlias alias="Blog" type="domain.blog.Blog"/> <typeAlias alias="Comment" type="domain.blog.Comment"/> <typeAlias alias="Post" type="domain.blog.Post"/> <typeAlias alias="Section" type="domain.blog.Section"/> <typeAlias alias="Tag" type="domain.blog.Tag"/> </typeAliases>
使用这个配置, “Blog”可以任意用来替代“domain.blog. Blog”所使用的地方。
typeHandlers
无论是 MyBatis 在预处理语句中设置一个参数, 还是从结果集中取出一个值时, 类型处 理器被用来将获取的值以合适的方式转换成 Java 类型。下面这个表格描述了默认的类型处 理器。environments
MyBatis 可以配置多种环境。这会帮助你将 SQL 映射应用于多种数据库之中。例如, 你也许为开发要设置不同的配置, 测试和生产环境。 或者你可能有多种生产级数据库却共享 相同的模式,所以你会想对不同数据库使用相同的 SQL 映射。这种用例是很多的。你可以配置多种环境,但你只能为每个 SqlSessionFactory 实例选择一个,所以,如果你想连接两个数据库,你需要创建两个 SqlSessionFactory 实例,每个数据库 对应一个。而如果是三个数据库,你就需要三个实例,以此类推。记忆起来很简单:
为了明确创建哪种环境,你可以将它作为可选的参数传递给 SqlSessionFactoryBuilder。 可以接受环境配置的两个方法签名是:
SqlSessionFactory factory = sqlSessionFactoryBuilder.build(reader, environment); SqlSessionFactory factory = sqlSessionFactoryBuilder.build(reader, environment,properties);
<environments default="development">
<environment id="development">
<transactionManager type="JDBC">
<property name="..." value="..."/>
</transactionManager>
<dataSource type="POOLED"> <property name="driver" value="${driver}"/> <property name="url" value="${url}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> </dataSource>
</environment>
</environments>
注意这里的键:
•默认的环境 ID(比如:default=”development”)。
•每个 environment 元素定义的环境 ID(比如:id=”development”)。
•事务管理器的配置(比如:type=”JDBC”)。
•数据源的配置(比如:type=”POOLED”)。
transactionManager
在 MyBatis 中有两种事务管理器类型(也就是 type=”[JDBC|MANAGED]”):•JDBC – 这个配置直接简单使用了 JDBC 的提交和回滚设置。 它依赖于从数据源得 到的连接来管理事务范围。
•MANAGED – 这个配置几乎没做什么。它从来不提交或回滚一个连接。而它会让 容器来管理事务的整个生命周期(比如 Spring 或 JEE 应用服务器的上下文) 默认 情况下它会关闭连接。 然而一些容器并不希望这样, 因此如果你需要从连接中停止 它,将 closeConnection 属性设置为 false。例如:
<transactionManager type="MANAGED"> <property name="closeConnection" value="false"/> </transactionManager>
dataSource
dataSource 元素使用基本的 JDBC 数据源接口来配置 JDBC 连接对象的资源。有三种内建的数据源类型(也就是 type=”???”):
UNPOOLED – 这个数据源的实现是每次被请求时简单打开和关闭连接。它有一点慢, 这是对简单应用程序的一个很好的选择, 因为它不需要及时的可用连接。 不同的数据库对这 个的表现也是不一样的, 所以对某些数据库来说配置数据源并不重要, 这个配置也是闲置的
POOLED – 这是 JDBC 连接对象的数据源连接池的实现,用来避免创建新的连接实例 时必要的初始连接和认证时间。这是一种当前 Web 应用程序用来快速响应请求很流行的方 法。
JNDI – 这个数据源的实现是为了使用如 Spring 或应用服务器这类的容器, 容器可以集 中或在外部配置数据源,然后放置一个 JNDI 上下文的引用
mapper
既然 MyBatis 的行为已经由上述元素配置完了,我们现在就要定义 SQL 映射语句了。 但是, 首先我们需要告诉 MyBatis 到哪里去找到这些语句。 Java 在这方面没有提供一个很好 的方法, 所以最佳的方式是告诉 MyBatis 到哪里去找映射文件。 你可以使用相对于类路径的 资源引用,或者字符表示,或 url 引用的完全限定名(包括 file:///URLs) 。例如:<!-- Using classpath relative resources --> <mappers> <mapper resource="org/mybatis/builder/AuthorMapper.xml"/> <mapper resource="org/mybatis/builder/BlogMapper.xml"/> <mapper resource="org/mybatis/builder/PostMapper.xml"/> </mappers>
<!-- Using url fully qualified paths --> <mappers> <mapper url="file:///var/mappers/AuthorMapper.xml"/> <mapper url="file:///var/mappers/BlogMapper.xml"/> <mapper url="file:///var/mappers/PostMapper.xml"/> </mappers>
相关文章推荐
- mybatis错误之配置文件属性配置问题
- Mybatis[2] - 配置文件讲解
- mybatis 引入外部属性文件 别名配置 映射文件配置
- Spring Cloud Spring Boot mybatis分布式微服务云架构(四)属性配置文件详解(2)
- mybatis错误之配置文件属性配置问题
- 解决Mybatis的配置文件标签属性自动提示
- Spring Cloud Spring Boot mybatis分布式微服务云架构(三)属性配置文件详解(1)
- Spring Cloud Spring Boot mybatis分布式微服务云架构(四)属性配置文件详解(2)
- 【Mybatis】配置文件加载属性
- Mybatis系列(二):优化MyBatis配置文件中的配置和解决字段名与实体类属性名不相同的冲突
- Mybatis 属性配置文件 application.properties
- MyBatis中Mapper的文件配置讲解二 (四)
- 问题一20150509——mybatis的配置文件useGeneratedKeys属性(报java.lang.ArrayIndexOutOfBoundsException)
- mybatis 配置文件中属性判断是否合法
- Mybatis配置文件中的mapUnderscoreToCamelCase属性
- Mybatis配置文件中mapper标签中namespace属性作用小结
- Spring Cloud Spring Boot mybatis分布式微服务云架构(四)属性配置文件详解(2)
- Spring Cloud Spring Boot mybatis分布式微服务云架构(三)属性配置文件详解(1)
- MyBatis中Mapper的文件配置讲解一 (三)
- spring中mybatis配置数据源读取不到properties属性文件的问题