MyBatis学习(七)--核心配置文件详解

核心配置文件配置项

  MyBatis的XML配置文件包含了设置和影响MyBatis行为的属性。 XML配置文件的层次结构如下:

configuration
  properties
  settings
  typeAliases
  typeHandlers
  objectFactory
  plugins
  environments
    environment
      transactionManager
      dataSource
  mapper

配置项详解

  properties:    

    它们都是外部化, 可替代的属性,用于外部属性文件的导入。可以配置在一个典型的Java属性文件中,或者通过properties元素的子元素进行配置。

    

    实例:属性配置文件:

      加载属性配置文件:db.perproties

      

      将数据库连接配置在属性文件中,减少了硬编码,便于统一管理,其他的xml可以直接使用

      后需修改简单,properties中的内容相对单一

       

      使用配置属性名和属性值

        在映射文件中通过EL表达式读取属性

        读取属性值优先级:参数传递 > 属性文件 > 属性配置项

      通过参数传递:

       

      配置文件:

       

      属性配置项:

       

  settings:

    MyBatis的重要配置项,可以改变MyBatis在运行时的行为方式。

置选项 描述 可用值 默认值
cacheEnabled 全局性地启用或禁用所有在mapper 配
置文件中配置的缓存。
true |
false
true
lazyLoadingEnabled 全局性地启用或禁用延迟加载。当禁用
时,所有关联的配置都会立即加载。
true |
false
true
aggressiveLazyLoading 当启用后,一个有延迟加载属性的对象
的任何一个延迟属性被加载时,该对象
的所有的属性都会被加载。否则,所有
属性都是按需加载。
true |
false
true
multipleResultSetsEnabled 允许或禁止从单一的语句返回多个结果
集(需要驱动程序兼容)。
true |
false
true
useColumnLabel 使用列的标签而不是列的名称。在这方
面,不同的驱动程序可能有不同的实
现。参考驱动程序的文档或者进行测试
来确定您所使用的驱动程的行为
true |
false
true
useGeneratedKeys 允许JDBC 自动生成主键。需要驱动程
序兼容。如果设置为true则会强行自
动生成主键,然而有些则不会自动生成
主键(驱动程序不兼容),但依旧会工
作(如Derby)。
true |
false
False
autoMappingBehavior 指定MyBatis是否以及如何自动将列映
射到字段/属性。
PARTIAL: 只是自动映射简单、非嵌套
的结果集。
FULL: 将会自动映射任何复杂的(嵌套
或非嵌套)的结果集。
NONE,
PARTIAL,
FULL
PARTIAL
defaultExecutorType 配置默认的执行器( executor)。
SIMPLE :简单的执行器。
REUSE :重用prepared statements 的
执行器。
BATCH:重用statements并且进行批量
更新的执行器。
SIMPLE
REUSE
BATCH
SIMPLE
defaultStatementTimeout 设置查询数据库超时时间。 任何正整数 Not Set
(null

 

  typeAliases:

    别名,为类定义取别名;

    mapper.xml映射文件中,statement的输入参数(parameterType)和输出参数(resultType)的类型可以使用别名;

    Java的基本数据类型也支持别名:int—Integer;

    Pojo 类使用别名;

    如:

    

  typeHandlers:

    类型处理器,处理数据库类型与Java类型之间的转换。如下表:

Type Handler Java Types JDBC Types
BooleanTypeHandler Boolean, boolean 任何兼容的 BOOLEAN
ByteTypeHandler Byte, byte 任何兼容的NUMERIC 或BYTE
ShortTypeHandler Short, short 任何兼容的NUMERIC 或 SHORT INTEGER
IntegerTypeHandler Integer, int 任何兼容的NUMERIC 或 INTEGER
LongTypeHandler Long, long 任何兼容的NUMERIC 或 LONG INTEGER
FloatTypeHandler Float, float 任何兼容的NUMERIC 或 FLOAT
DoubleTypeHandler Double, double 任何兼容的NUMERIC 或 DOUBLE
BigDecimalTypeHandler BigDecimal 任何兼容的NUMERIC 或 DECIMAL
StringTypeHandler String CHAR, VARCHAR
ClobTypeHandler String CLOB, LONGVARCHAR
NStringTypeHandler String NVARCHAR, NCHAR
NClobTypeHandler String NCLOB
ByteArrayTypeHandler byte[] 任何兼容的byte stream type
BlobTypeHandler byte[] BLOB, LONGVARBINARY
DateTypeHandler Date (java.util) TIMESTAMP
DateOnlyTypeHandler Date (java.util) DATE
TimeOnlyTypeHandler Date (java.util) TIME
SqlTimestampTypeHandler Timestamp
(java.sql)
TIMESTAMP
SqlDateTypeHadler Date (java.sql) DATE
SqlTimeTypeHandler Time (java.sql) TIME
ObjectTypeHandler Any OTHER, or unspecified
EnumTypeHandler Enumeration Type VARCHAR –任何与string 兼容的类型,储存
的是编码而不是索引。


  objectFactory:

    创建结果对象实例时使用objectFactory来实现, MyBatis每次创建一个结果对象实例都会使用ObjectFactory实例 。

     

   ObjectFactory 接口非常简单,它包含两个create 的方法,一个是默认构造器,还有一个是含参数的构造器。最后的setProperties 方法用来配置ObjectFactory。在初始化您自己的ObjectFactory 实例之后,定义在objectFactory 元素主体中的属性会以参数的形式传递给setProperties 方法 

  plugins:

    MyBatis中的拦截器,拦截MyBatis的执行过程、参数解析、结果集解析、SQL封装。MyBatis允许plugins插件拦截以下方法:

    

  environments:

    配置不同的数据库环境,创建SqlSessionFactory来对应不同的数据库环境。

    注:虽然您可以配置多个运行环境,但是每个SqlSessionFactory实例只能选择一个运行环境。每个数据库对应一个SqlSessionFactory实例。

  environment:

    每一个数据库所对应的环境。
  transactionManager:

    JDBC:这个配置直接使用JDBC的提交和回滚功能。它依赖于从数据源获得连接来管理事务的生命周期。

     MANAGED:这个配置基本上什么都不做。它从不提交或者回滚一个连接的事务。而是让容器(例如: Spring或者J2EE应用服务器)来管理事务的生命周期 。 

  dataSource:

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

      POOLED:这个数据源的实现缓存了JDBC连接对象,用于避免每次创建新的数据库连接时都初始化和进行认证,加快程序响应

      UNPOOLED:这个类型的数据源实现只是在每次需要的时候简单地打开和关闭连接。

      JNDI:个数据源的配置是为了准备与像Spring 或应用服务器能够在外部或者内部配置数据源的容器一起使用,然后在JNDI 上下文中引用它。 

  mapper : 

    映射本地文件

    映射URL路径文件

    映射类

    注册扫描包

    加载映射文件的方法:

      resource:加载单个映射文件

      

      class:使用mapper映射接口加载映射文件(接口模式)

       

      批量加载:框架加载

      

      注意:接口与映射文件要在同一包下,且同名

 

PS:因作者能力有限,如有误还请谅解

posted @ 2018-04-03 10:48  IVEGOTNOIDEA  阅读(368)  评论(0编辑  收藏  举报