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

 更新时间:2016年06月01日 16:39:34   作者:fhd001  
将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类型。下面这个表格描述了默认的类型处理器。

201661163147223.png (617×676)

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

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 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>  

注意这里:
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接口的实现类。

相关文章

  • Java中类的初始化和实例化区别详解

    Java中类的初始化和实例化区别详解

    这篇文章主要介绍了Java中类的初始化和实例化区别详解,类的初始化<BR>是完成程序执行前的准备工作,类的实例化(实例化对象)是指创建一个对象的过程,需要的朋友可以参考下
    2023-08-08
  • JVM内存参数配置详解

    JVM内存参数配置详解

    本文主要介绍了JVM内存参数配置详解,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • spring boot集成smart-doc自动生成接口文档详解

    spring boot集成smart-doc自动生成接口文档详解

    这篇文章主要介绍了spring boot集成smart-doc自动生成接口文档详解,smart-doc是一款同时支持java restful api和Apache Dubbo rpc接口文档生成的工具,smart-doc颠覆了传统类似swagger这种大量采用注解侵入来生成文档的实现方法
    2022-09-09
  • jboss配置方法简明教程

    jboss配置方法简明教程

    这篇文章主要介绍了jboss配置方法,较为简明扼要的说明了jboss服务器所需要的JDK环境安装设置以及jboss的安装与下载,并分析了配置与使用中的常见问题,需要的朋友可以参考下
    2016-08-08
  • 浅谈Java中生产者与消费者问题的演变

    浅谈Java中生产者与消费者问题的演变

    这篇文章主要介绍了浅谈Java中生产者与消费者问题的演变,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-10-10
  • JavaWeb实现显示mysql数据库数据

    JavaWeb实现显示mysql数据库数据

    MySQL是最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的。本文将利用JavaWeb实现显示mysql数据库数据功能,需要的可以参考一下
    2022-03-03
  • Springboot使用Spring Data JPA实现数据库操作

    Springboot使用Spring Data JPA实现数据库操作

    Spring Data JPA 是 Spring 基于 Spring Data 框架、在JPA 规范的基础上开发的一个框架,使用 Spring Data JPA 可以极大地简化JPA 的写法,本章我们将详细介绍在Springboot中使用 Spring Data JPA 来实现对数据库的操作
    2021-06-06
  • 原生Java操作mysql数据库过程解析

    原生Java操作mysql数据库过程解析

    这篇文章主要介绍了原生Java操作mysql数据库过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • Java中的Native关键字讲解

    Java中的Native关键字讲解

    本文介绍了Java中的Native关键字,native关键字是架起本机语言和JAVA之间鸿沟的桥梁。如果我们的软件与硬件的交互在使用预先存在的代码时更有效,那么这可以作为一个关键环节。与从头开始设计新的应用程序代码相比,只要可以避免,它就可以使实现工作更少,下面来了解集体内容
    2021-12-12
  • Java技巧分享之利用RxJava打造可观测数据RxLiveData

    Java技巧分享之利用RxJava打造可观测数据RxLiveData

    这篇文章主要来和大家分享一个Java技巧,那就是利用RxJava打造可观测数据RxLiveData,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2023-06-06

最新评论