您的位置:首页 > 其它

mybatis的配置文件结构

2016-04-13 17:12 453 查看
XML文件结构如:

configuration 配置

properties
属性
settings
设置
typeAliases
类型命名
typeHandlers
类型处理器
objectFactory
对象工厂
plugins
插件
environments
环境

environment
环境变量

transactionManager
事务管理器
dataSource
数据源

databaseIdProvider 数据库厂商标识
mappers
映射器

(1)properties 属性

<!--要写在要用的前面-->
<properties resource="jdbc.properties">
<property name="username" value="root" />
<property name="password" value="mysql"/>
</properties>

<environments default="development">
<environment id="development">
<!--决定事务范围和控制方式的事务管理器(TransactionManager)-->
<transactionManager type="JDBC" />
<!--数据库连接实例的数据源(DataSource)-->
<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>

这个例子中的 username 和 password 将会由 properties 元素中设置的相应值来替换。 driver 和 url 属性将会由 config.properties 文件中对应的值来替换。这样就为配置提供了诸多灵活选择。

如果属性在不只一个地方进行了配置,那么 MyBatis 将按照下面的顺序来加载:

在 properties 元素体内指定的属性首先被读取。
然后根据 properties 元素中的 resource 属性读取类路径下属性文件或根据 url 属性指定的路径读取属性文件,并覆盖已读取的同名属性。
最后读取作为方法参数传递的属性,并覆盖已读取的同名属性。

因此,通过方法参数传递的属性具有最高优先级,resource/url 属性中指定的配置文件次之,最低优先级的是 properties 属性中指定的属性。

(2)settings 设置

<settings>
<!--配置缓存的全局开关-->
<setting name="cacheEnabled" value="true"/>
<!--延迟加载的全局开关-->
<setting name="lazyLoadingEnabled" value="true"/>
<!--是否允许单一语句返回多结果集-->
<setting name="multipleResultSetsEnabled" value="true"/>
<!--使用列标签代替列名-->
<setting name="useColumnLabel" value="true"/>
<!--允许JDBC支持自动生成主键-->
<setting name="useGeneratedKeys" value="false"/>
<!--指定Mybatis应如何自动映射列到字段或属性-->
<setting name="autoMappingBehavior" value="PARTIAL"/>
<!--默认的执行器,SIMPLE就是普通的执行器,REUSE执行器会重用预处理语句,BATCH执行器将重用语句并执行批量更新-->
<setting name="defaultExecutorType" value="SIMPLE"/>
<!--设置超时时间,驱动等待数据库响应的秒数-->
<setting name="defaultStatementTimeout" value="25"/>
<!--允许在嵌套语句中使用分页-->
<setting name="safeRowBoundsEnabled" value="false"/>
<!--是否开启驼峰命名规则映射,即数据库A_COLUMN到JAVA属性aColumn-->
<setting name="mapUnderscoreToCamelCase" value="false"/>
<!--利用本地缓存机制防止循环引用和加速重复嵌套查询-->
<setting name="localCacheScope" value="SESSION"/>
<!--当没有为参数提供特定的JDBC类型时,为空值指定JDBC类型-->
<setting name="jdbcTypeForNull" value="OTHER"/>
<!--指定哪一个对象的方法触发一次延迟加载-->
<setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
</settings>


(3)TypeAliases 类型命名

<!--类型别名是为 Java 类型设置一个短的名字。它只和 XML 配置有关,存在的意义仅在于用来减少类完全限定名的冗余.-->
<typeAliases>
<typeAlias alias="User" type="com.pandawork.springmvc.common.entity.User"/>
</typeAliases>

也可以指定一个包名,MyBatis 会在包名下面搜索需要的 Java Bean

<typeAliases>
<package name="com.pandawork.springmvc.common.entity"/>
</typeAliases>


(4)environments 环境

如果你想连接两个数据库,就需要创建两个 SqlSessionFactory 实例,每个数据库对应一个。而如果是三个数据库,就需要三个实例,依此类推,记起来很简单:每个数据库对应一个 SqlSessionFactory 实例

事务管理器(transactionManager)

在 MyBatis 中有两种类型的事务管理器(也就是 type=”[JDBC|MANAGED]”):

JDBC – 这个配置就是直接使用了 JDBC 的提交和回滚设置,它依赖于从数据源得到的连接来管理事务范围。
MANAGED – 这个配置几乎没做什么。它从来不提交或回滚一个连接,而是让容器来管理事务的整个生命周期(比如 JEE 应用服务器的上下文)。 默认情况下它会关闭连接,然而一些容器并不希望这样,因此需要将 closeConnection 属性设置为 false 来阻止它默认的关闭行为

数据源(dataSource)

dataSource 元素使用标准的 JDBC 数据源接口来配置 JDBC 连接对象的资源。

许多 MyBatis 的应用程序将会按示例中的例子来配置数据源。然而它并不是必须的。要知道为了方便使用延迟加载,数据源才是必须的。

有三种内建的数据源类型(也就是 type=”[UNPOOLED|POOLED|JNDI]”):

UNPOOLED– 这个数据源的实现只是每次被请求时打开和关闭连接。

POOLED– 这种数据源的实现利用“池”的概念将 JDBC 连接对象组织起来,避免了创建新的连接实例时所必需的初始化和认证时间。

JNDI– 这个数据源的实现是为了能在如 EJB 或应用服务器这类容器中使用,容器可以集中或在外部配置数据源,然后放置一个 JNDI 上下文的引用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: