zoukankan      html  css  js  c++  java
  • 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:因作者能力有限,如有误还请谅解

  • 相关阅读:
    python class属性
    获取安卓系统日志输出
    深入理解C#中的IDisposable接口(转)
    Mac开启自带的Apache服务器
    【转】《Unity Shader入门精要》冯乐乐著 书中彩图
    AssetDatabase的方法总结
    C# 读写XML文件的方法
    tkinter模块常用参数(python3)
    Unity在Project视图里面显示文件的拓展名
    Git忽略提交规则
  • 原文地址:https://www.cnblogs.com/WHL5/p/8707066.html
Copyright © 2011-2022 走看看