• MyBatis配置文件(mybatis-config.xml)简介说明


    转自:

    MyBatis配置文件(mybatis-config.xml)简介说明

    MyBatis 配置文件的结构如下

    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    


    注意事项:
        mybatis-config.xml 文件中的元素节点是有一定顺序的,节点位置必须按以上位置排序,否则会编译错误

    下面介绍 XML 配置文件中的重要元素(标签)

      configuration 元素

           是整个 XML 配置文件的根节点,常用于包含所有配置信息的头部标签

    properties标签

         properties 标签可以通过 resource 属性指定外部 properties 文件(database.properties),也可以通过 properties 子元素配置。

    1. 指定文件

       使用 properties 指定外部文件

    database.properties 用于描述数据库连接的相关配置,例如数据库驱动、连接数据库的 url、数据库用户名、数据库密码等。

    2. properties子元素配置

    通过 properties 子元素 property 配置 username 和 password 变量,然后在 environments 节点中引用这些变量,代码如下





    在 environments 节点中引用 username 和 password 变量 












    也可以不使用 properties 标签,直接将属性值写在 value 中。

    settings标签

    settings 标签用于配置 MyBatis 的运行时行为,它能深刻的影响 MyBatis 的底层运行,一般情况下无需配置,通常情况下使用其默认值即可

    settings 的配置项很多,但是真正用到的不会太多,我们把常用的配置项研究清楚就可以了。settings 配置项说明如下表所示(红色字体为常用配置)。
     

    settings 配置项说明
    配置项作用配置选项默认值
    cacheEnabled该配置影响所有映射器中配置缓存的全局开关true|falsetrue
    lazyLoadingEnabled延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。在特定关联关系中可通过设置 fetchType 属性来覆盖该项的开关状态 true|falsefalse
    aggressiveLazyLoading当启用时,对任意延迟属性的调用会使带有延迟加载属性的对象完整加载;反之,每种属性将会按需加载true|false版本3.4.1 (不包含)
    之前默认值为 true,之后为 false
    multipleResultSetsEnabled 是否允许单一语句返回多结果集(需要兼容驱动)true|falsetrue
    useColumnLabel使用列标签代替列名。不同的驱动会有不同的表现,具体可参考相关驱动文档或通过测试这两种不同的模式来观察所用驱动的结果true|falsetrue
    useGeneratedKeys允许JDBC 支持自动生成主键,需要驱动兼容。如果设置为 true,则这个设置强制使用自动生成主键,尽管一些驱动不能兼容但仍可正常工作(比如 Derby)true|falsefalse
    autoMappingBehavior指定 MyBatis 应如何自动映射列到字段或属性。
    NONE 表示取消自动映射。
    PARTIAL 表示只会自动映射,没有定义嵌套结果集和映射结果集。
    FULL 会自动映射任意复杂的结果集(无论是否嵌套)
    NONE、PARTIAL、FULLPARTIAL
    autoMappingUnkno wnColumnBehavior指定自动映射当中未知列(或未知属性类型)时的行为。 默认是不处理,只有当日志级别达到 WARN 级别或者以下,才会显示相关日志,如果处理失败会抛出 SqlSessionException 异常NONE、WARNING、FAILINGNONE
    defaultExecutorType配置默认的执行器。SIMPLE 是普通的执行器;REUSE 会重用预处理语句(prepared statements);BATCH 执行器将重用语句并执行批量更新 SIMPLE、REUSE、BATCHSIMPLE
    defaultStatementTimeout设置超时时间,它决定驱动等待数据库响应的秒数任何正整数Not Set (null)
    defaultFetchSize设置数据库驱动程序默认返回的条数限制,此参数可以重新设置任何正整数  Not Set (null)
    safeRowBoundsEnabled允许在嵌套语句中使用分页(RowBounds)。如果允许,设置 falsetrue|falsefalse
    safeResultHandlerEnabled允许在嵌套语句中使用分页(ResultHandler)。如果允许,设置falsetrue|falsetrue
    mapUnderscoreToCamelCase是否开启自动驼峰命名规则映射,即从经典数据库列名 A_COLUMN 到经典 Java 属性名 aColumn 的类似映射true|falsefalse
    localCacheScopeMyBatis 利用本地缓存机制(Local Cache)防止循环引用(circular references)和加速联复嵌套査询。
    默认值为 SESSION,这种情况下会缓存一个会话中执行的所有查询。若设置值为 STATEMENT,本地会话仅用在语句执行上,对相同 SqlScssion 的不同调用将不会共享数据  
    SESSION|STATEMENTSESSION
    jdbcTypeForNull当没有为参数提供特定的 JDBC 类型时,为空值指定 JDBC 类型。某些驱动需要指定列的 JDBC 类型,多数情况直接用一般类型即可,比如 NULL、VARCHAR 或 OTHERNULL、VARCHAR、OTHER  OTHER
    lazyLoadTriggerMethods指定哪个对象的方法触发一次延迟加载equals、clone、hashCode、toString
    defaultScriptingLanguage指定动态 SQL 生成的默认语言org.apache.ibatis
    .script.ing.xmltags
    .XMLDynamicLanguageDriver
    callSettersOnNulls指定当结果集中值为 null 时,是否调用映射对象的 setter(map 对象时为 put)方法,这对于 Map.kcySet() 依赖或 null 值初始化时是有用的。注意,基本类型(int、boolean 等)不能设置成 nulltrue|falsefalse
    logPrefix指定 MyBatis 增加到日志名称的前缀 任何字符串Not set
    loglmpl指定 MyBatis 所用日志的具体实现,未指定时将自动査找SLF4J|LOG4J|LOG4J2|JDK_LOGGING
    |COMMONS_LOGGING
    |ST DOUT_LOGGING|NO_LOGGING
    Not set
    proxyFactory指定 MyBatis 创建具有延迟加栽能力的对象所用到的代理工具CGLIB|JAVASSISTJAVASSIST (MyBatis 版本为 3.3 及以上的)
    vfsImpl指定 VFS 的实现类  提供 VFS 类的全限定名,如果存在多个,可以使用逗号分隔 Not set
    useActualParamName允许用方法参数中声明的实际名称引用参数。要使用此功能,项目必须被编译为 Java 8 参数的选择。(从版本 3.4.1 开始可以使用)true|falsetrue


    下面给出一个全量的配置样例,如下:

    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    typeAliases标签

    为了不在任何地方都指定类的全限定名,我们可以使用 typeAliases 标签定义一个别名。

    例如,在 com.java265.po 包中有一个 Student 类,则该类的全限定名称为 com.java265.po.Student。使用 typeAliases 标签定义别名,这样就不用每次都书写类的全限定名称了,代码如下。


    如果需要对同一个包下的多个类定义别名,则可以定义为:

     
    


    这样 MyBatis 将扫描 com.java265.po 包里面的类,将其第一个字母变为小写作为其别名,例如 Student 别名为 student,User 别名为 user。

    typeHandlers标签

    typeHandlers 主要将获取的值合理地转化为 Java 类型。在 typeHandler 中,分为 jdbcType 和 javaType,其中 jdbcType 用于定义数据库类型,
    而 javaType 用于定义 Java 类型,typeHandler 的作用就是承担 jdbcType 和 javaType 之间的相互转换。

    MyBatis 支持自定义处理类型,在自定义处理类型时,需要实现 org.apache.ibatis.type.TypeHandler 接口或继承 org.apache.ibatis.type.BaseTypeHandle 类。详细可参考官网:http://www.mybatis.org/mybatis-3/zh/configuration.html#typeHandlers

    environments标签

    在 environments 标签中,可以配置 MyBatis 的多套运行环境,将 SQL 映射到多个不同的数据库上。

    environment 是 environments 的子标签,用来配置 MyBatis 的一套运行环境,需指定运行环境 ID、事务管理、数据源配置等相关信息。

    我们可以通过配置多个 environment 标签来连接多个数据库,需要注意的是必须指定其中一个为默认运行环境(通过default指定)。

    environment 标签提供了两个子标签,即 transactionManager 和 dataSource。

    transactionManager标签

    MyBatis 支持两个事务管理器,即 JDBC 和 MANAGED。

    如果使用 JDBC 类型的事务管理器,则应用程序服务器负责事务管理操作,例如提交、回滚等。如果使用 MANAGED 类型的事务管理器,则应用程序服务器负责管理连接生命周期。

    dataSource标签

    用于配置数据库的连接属性,例如要连接的数据库的驱动程序名称、URL、用户名和密码等。

    dataSource 中的 type 属性用于指定数据源类型,有以下 3 种类型。

    1)UNPOOLED

    UNPOOLED 没有数据库连接池,效率低下。MyBatis 需要打开和关闭每个数据库操作的连接,它有点慢,通常应用于简单的应用程序。

    2)POOLED

    对于 POOLED 数据源类型,MyBatis 将维护一个数据库连接池。并且对于每个数据库的操作,MyBatis 都会使用连接池中的连接,并在操作完成后将它们返回到池中。减少了创建新连接所需的初始连接和身份验证时间。

    3)JNDI

    对于 JNDI 的数据源类型,MyBatis 将从 JNDI 数据源中获取连接。

    dataSource 标签示例代码如下:

     
    
    1. value="jdbc:mysql://localhost:3306/test?characterEncoding=utf8" />

    mappers标签

    mappers 标签用于指定 MyBatis SQL 映射文件的路径。

    mapper 是 mappers 的子标签,mapper 中的 resource 属性用于指定 SQL 映射文件的路径(类资源路径)

    例,SQL 映射文件的名称是 Student.xml,它位于名为 com.java265.mapper 的包中,那么您可以这样配置:

  • 相关阅读:
    人工智能与建筑设计未来,人工智能建筑设计方案
    Gradle 使用maven本地仓库 带来的思考
    Java成员内部类、局部内部类、匿名内部类
    微信支付APIv3版,平台证书可视化下载工具
    Unity之ShaderGraph如何实现水波纹效果
    怎么在r里导入自己下载的基因芯片数据
    NIO Netty(四)
    牛客暑期多校解题报告: 2
    21天学习挑战赛之java多线程
    【系统架构设计】架构核心知识: 3.6 负载均衡和Session
  • 原文地址:https://blog.csdn.net/qq_25073223/article/details/128032213