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 HandlerJava TypesJDBC Types
BooleanTypeHandlerBoolean, boolean任何兼容的 BOOLEAN
ByteTypeHandlerByte, byte任何兼容的NUMERIC 或BYTE
ShortTypeHandlerShort, short任何兼容的NUMERIC 或 SHORT INTEGER
IntegerTypeHandlerInteger, int任何兼容的NUMERIC 或 INTEGER
LongTypeHandlerLong, long任何兼容的NUMERIC 或 LONG INTEGER
FloatTypeHandlerFloat, float任何兼容的NUMERIC 或 FLOAT
DoubleTypeHandlerDouble, double任何兼容的NUMERIC 或 DOUBLE
BigDecimalTypeHandlerBigDecimal任何兼容的NUMERIC 或 DECIMAL
StringTypeHandlerStringCHAR, VARCHAR
ClobTypeHandlerStringCLOB, LONGVARCHAR
NStringTypeHandlerStringNVARCHAR, NCHAR
NClobTypeHandlerStringNCLOB
ByteArrayTypeHandlerbyte[]任何兼容的byte stream type
BlobTypeHandlerbyte[]BLOB, LONGVARBINARY
DateTypeHandlerDate (java.util)TIMESTAMP
DateOnlyTypeHandlerDate (java.util)DATE
TimeOnlyTypeHandlerDate (java.util)TIME
SqlTimestampTypeHandlerTimestamp
(java.sql)
TIMESTAMP
SqlDateTypeHadlerDate (java.sql)DATE
SqlTimeTypeHandlerTime (java.sql)TIME
ObjectTypeHandlerAnyOTHER, or unspecified
EnumTypeHandlerEnumeration TypeVARCHAR –任何与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:因作者能力有限,如有误还请谅解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值