Java的MyBatis框架中关键的XML字段映射的配置参数详解

软件编程 java 分类:[default] 更新日期: 2016-04-14
将XML文件的schema字段映射到数据库的schema是我们操作数据库的常用手段,这里我们就来整理一些Java的MyBatis框架中关键的XML字段映射的配置参数详解,需要的朋友可以参考下

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> 

  
 这个例子中的username和password将会由properties元素中设置的值来替换。driver和url属性将会从包含进来的config.properties文件中的值来替换。
 
Settings
 
1.cacheEnabled
这个配置使全局的映射器启用或禁用缓存。
有效值:true,false
默认值:true
 
2.lazyLoadingEnabled
全局启用或禁用延迟加载。当禁用时,所有关联对象都会即时加载。
有效值:true,false
默认值:true
 
3.aggressiveLazyLoading
当启用时,有延迟加载属性的对象在被调用时将会完全加载任意属性。否则,
每种属性将会按需要加载。
有效值:true,false
默认值:true
 
4.mult ipleResultSetsEnabled
允许或不允许多种结果集从一个单独的语句中返回(需要适合的驱动)
有效值:true,false
默认值:true
 
5.useColumnLabel
使用列标签代替列名。不同的驱动在这方便表现不同。参考驱动文档或充分测
试两种方法来决定所使用的驱动。
有效值:true,false
默认值:true
 
6.useGeneratedKeys
允许JDBC支持生成的键。需要适合的驱动。如果设置为true则这个设置强制
生成的键被使用,尽管一些驱动拒绝兼容但仍然有效(比如 Derby) 
有效值:true,false
默认值:false
 
7.autoMappingBehavior 
指定MyBatis如何自动映射列到字段/属性。PARTIAL只会自动映射简单,没有嵌套的结果。
FULL会自动映射任意复杂的结果(嵌套的或其他情况)
有效值:NONE,PARTIAL,FULL
默认值:PARTIAL
 
8.defaultExecutorType
配置默认的执行器。SIMPLE 执行器没有什么特别之处。REUSE执行器重用预处理语句。
BATCH 执行器重用语句和批量更新
有效值:SIMPLE,REUSE,BATCH
默认值:SIMPLE
 
9.defaultStatementTimeout 
设置超时时间,它决定驱动等待一个数据库响应的时间。
有效值:Any,positive,integer
默认值:Not Set(null) 
 
一个设置信息元素的示例,完全的配置如下所示:

<settings>  
  <setting name="cacheEnabled" value="true"/>  
  <setting name="lazyLoadingEnabled" value="true"/>  
  <setting name="multipleResultSetsEnabled" value="true"/>  
  <setting name="useColumnLabel" value="true"/>  
  <setting name="useGeneratedKeys" value="false"/>  
  <setting name="enhancementEnabled" value="false"/>  
  <setting name="defaultExecutorType" value="SIMPLE"/>  
  <setting name="defaultStatementTimeout" value="25000"/>  
</settings> 

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”所使用的地方。  对于普通的 Java 类型,有许多内建的类型别名。它们都是大小写不敏感的,由于重载的名字,要注意原生类型的特殊处理。

typeHandlers
无论是MyBatis在预处理语句中设置一个参数,还是从结果集中取出一个值时,类型处理器被用来将获取的值以合适的方式转换成Java类型。下面这个表格描述了默认的类型处理器。

Java的MyBatis框架中关键的XML字段映射的配置参数详解

你可以重写类型处理器或创建你自己的类型处理器来处理不支持的或非标准的类型。但这种情况相当少!!

objectFactory
MyBatis每次创建结果对象新的实例时,它使用一个ObjectFactory实例来完成。如果参数映射存在,默认的ObjectFactory不比使用默认构造方法或带参数的构造方法实例化目标类做的工作多。如果你想重写默认的ObjectFactory,你可以创建你自己的。实例略。

plugins
MyBatis允许你在某一点拦截已映射语句执行的调用。默认情况下,MyBatis允许使用插件来拦截方法调用:
 
1.Executor
(update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)
 
2.ParameterHandler 
(getParameterObject, setParameters)

3.ResultSetHandler 
(handleResultSets, handleOutputParameters)
 
4.StatementHandler 
(prepare, parameterize, batch, update, query)

environments
MyBatis可以配置多种环境。这会帮助你将SQL映射应用于多种数据库之中。
一个很重要的问题要记得:你可以配置多种环境,但你只能为每个SqlSessionFactory实例选择一个。所以,如果你想连接两个数据库,你需要创建两个SqlSessionFactory实例,每个数据库对应一个。而如果是三个数据库,你就需要三个实例,以此类推。
环境元素定义了如何配置环境,如例:

<environments default="development">  
  <environment >  
    <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>  

注意这里:
1.默认的环境 ID(比如:default=”development”)。
2.每个 environment 元素定义的环境 ID(比如:id=”development”)。  
3.事务管理器的配置(比如:type=”JDBC”)。
4.数据源的配置(比如:type=”POOLED”)。

transactionManager
在MyBatis中有两种事务管理器类型(也就是type="[JDBC|MANAGED]"。
1.JDBC---这个配置直接简单使用了JDBC的提交和回滚设置。它依赖于从数据源得到的连接来管理事务范围。
2.MANAGED---这个配置几乎没做什么。它从来不提交或回滚一个连接。而它会让容器来管理事务的整个生命周期(比如Spring或JEE应用服务器的上下文)。默认情况下它会关闭连接。然而一些容器并不希望这样,因此如果你需要从连接中停止它,将closeConnection属性设置为false。例如:

<transactionManager type="MANAGED">  
  <property name="closeConnection" value="false"/>  
</transactionManager>  

 这两种事务管理器都不需要任何属性。然而它们都是类型别名,要替换它们,你需要放置你自己的类的完全限定名或类型别名,它们引用了你对TransacFactory接口的实现类。


> 本站内容系网友提交或本网编辑转载,其目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请及时与本网联系,我们将在第一时间删除内容!

相关文章
  • 解读ASP.NET5&MVC6系列教程1:ASP.NET5简介
    这篇文章主要介绍ASP.NET 5简介以及对各个版本号进行解释,ASP.NET 5中新的变化,需要的朋友可以参考下.ASP.NET 5简介 ASP.NET 5是一个跨时代的改写,所有的功能和模块都进行了独立拆分,做到了彻底解耦.为了这些改写,微软也是蛮 拼的,几乎把.NET Framwrok全部改写了一遍,形成了一个.NET Core的东西. 在.NET C ...
  • Yii2rbac权限控制之rule教程详解
    Yii2rbac权限控制之rule教程详解
    这篇文章主要介绍了Yii2 rbac权限控制之rule教程详解的相关资料,非常不错具有参考借鉴价值,需要的朋友可以参考下在我们之前Yii2搭建后台并实现rbac权限控制完整实例教程中,不知道你曾经疑惑过没有一个问题,rule表是做什么的,为什么在整个过程中我们都没有涉及到这张表? 相信我不说,部分人也都会去尝试,或百度或google,到头来也会竹篮打水,这部 ...
  • 详解表单验证正则表达式实例(推荐)
    这篇文章主要介绍了详解表单验证正则表达式实例推荐的相关资料,非常不错,具有参考借鉴价值,特此分享到平台供大家参考验证:!reg.test(value) 邮箱: 代码如下:reg = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/i; 不包含中文: 代码如下:r ...
  • 将xml文件作为一个小的数据库,进行学生的增删改查的简单实例
    下面小编就为大家带来一篇将xml文件作为一个小的数据库,进行学生的增删改查的简单实例.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧1.xml文件: <?xml version="1.0" encoding="UTF-8"?><Students> <stude ...
  • Flex中对表格某列的值进行数字格式化并求百分比添加%
    Flex中对表格某列的值进行数字格式化并求百分比添加%
    需要对表格中某列的数值进行格式化,对该数值乘以100,并保留两位小数,添加"%"下面同实例来实现下1.问题背景 一般的,需要对表格中某列的数值进行格式化,对该数值乘以100,并保留两位小数,添加"%" 2.实现实例 <?xml version="1.0" encoding="utf- ...
  • Swift中内置的集合类型学习笔记
    Swift中内置的集合类型学习笔记
    Swift中自带数组.set.字典三大集合类型,这里将学习过程中的基础的Swift中内置的集合类型学习笔记进行整理,需要的朋友可以参考下一.引言 Swift中提供了3种集合类型,Array数据类型,Set集合类型,Dictionary字典类型.Array用于存放一组有序的数据,数据角标从0开始一次递增:Set用于存放一组无序的数据,数据不可以重复:Dicti ...
猜你喜欢