mybatis的配置文件结构
2016-04-13 17:12
453 查看
XML文件结构如:
configuration 配置
properties
属性
settings
设置
typeAliases
类型命名
typeHandlers
类型处理器
objectFactory
对象工厂
plugins
插件
environments
环境
environment
环境变量
transactionManager
事务管理器
dataSource
数据源
databaseIdProvider 数据库厂商标识
mappers
映射器
(1)properties 属性
这个例子中的 username 和 password 将会由 properties 元素中设置的相应值来替换。 driver 和 url 属性将会由 config.properties 文件中对应的值来替换。这样就为配置提供了诸多灵活选择。
如果属性在不只一个地方进行了配置,那么 MyBatis 将按照下面的顺序来加载:
在 properties 元素体内指定的属性首先被读取。
然后根据 properties 元素中的 resource 属性读取类路径下属性文件或根据 url 属性指定的路径读取属性文件,并覆盖已读取的同名属性。
最后读取作为方法参数传递的属性,并覆盖已读取的同名属性。
因此,通过方法参数传递的属性具有最高优先级,resource/url 属性中指定的配置文件次之,最低优先级的是 properties 属性中指定的属性。
(2)settings 设置
(3)TypeAliases 类型命名
也可以指定一个包名,MyBatis 会在包名下面搜索需要的 Java Bean
(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 上下文的引用。
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 上下文的引用。
相关文章推荐
- Apache Lucene(全文检索引擎)—创建索引
- 简单实现Google play 横向RecyclerListView效果
- ocx工程及不显示椭圆的方法
- HTML 5 参考手册(Canvas)
- Kafka设计解析(四):Kafka Consumer解析
- android 5.0以上获取前台应用的包名
- 12年程序员职业生涯得到的12个经验教训:转
- iOS中磨砂视图的实现和总结blurEffectView
- 360移动安全岗位实习生笔试和面试之旅
- 用Xcode自带的svn搭建本地SVN服务器
- HTML5新特性之工作线程Web Worker
- word两幅图并排并且插入题注不会乱
- ajax 几种提交方式
- 初试Android的MVP框架
- hdu 1025
- Stanford Topic Modeling Toolbox0.4.0翻译
- 如何组织前端javascript代码
- 如何组织前端javascript代码
- 如何组织前端javascript代码
- 如何组织前端javascript代码