• mybatis常用的配置解析


    mybatis常用的配置解析

    MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属性信息。 配置文档的顶层结构如下:

    注意点:在我们编写配置的时候,属性出现的顺序要按照上述顺序依次出现

    properties(属性)

    可动态替换的,亦可通过 properties 元素的子元素来传递。例如:

    外建一个perproties

    driver=com.mysql.jdbc.Driver
    url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8
    username=root
    password=123456
    

    然后再核心配置文件中通过properties标签进行引入

    <configuration>
        <properties resource="db.properties"/>   <!--通过properties标签引入-->
        <environments default="development">
            <environment id="development">
                <transactionManager type="JDBC"/>
                <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>
    </configuration>
    

    这个例子中的 username 和 password 将会由 properties 元素中设置的相应值来替换。 driver 和 url 属性将会由 config.properties 文件中对应的值来替换。这样就为配置提供了诸多灵活选择。

    注意点:

    如果在properties标签内部配置了相应的值,例如:

    <properties resource="db.properties">
      <property name="username" value="dev_user"/>
      <property name="password" value="F2Fa3!33TYyg"/>
    </properties>https://mybatis.org/mybatis-3/zh/configuration.html#settings
    

    一切以xxx.properties内的内容为准,所以目前水平来说没什么卵用

    settings(设置)

    这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。

    但我们只需要记住几个重要的就行:

    cacheEnabled --->全局地开启或关闭配置文件中的所有映射器已经配置的任何缓存
    lazyLoadingEnabled --->延迟加载的全局开关
    mapUnderscoreToCamelCase --->是否开启驼峰命名规则
    logImpl --->指定日志的具体实现
    

    typeAliases(类型别名)

    类型别名是为 Java 类型设置一个短的名字。 它只和 XML 配置有关,存在的意义仅在于用来减少类完全限定名的冗余。例如:

    <typeAliases>
      <typeAlias alias="User" type="com.xu.pojo.User"/>
    </typeAliases>
    

    xxxMapper.xml中变化:

    <!--配置类型别名之前:-->
    <select id="getUserById" resultType="com.xu.pojo.User" parameterType="int">
       select * from mybatis.user
    </select>
    
    <!--配置类型别名之后:-->
    <select id="getUserById" resultType="User" parameterType="int">
       select * from mybatis.user
    </select>
    

    environments(环境配置)

    MyBatis 可以配置成适应多种环境,这种机制有助于将 SQL 映射应用于多种数据库之中, 现实情况下有多种理由需要这么做。例如,开发、测试和生产环境需要有不同的配置。

    • 环境元素定义了如何配置环境。
    <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>
    

    注意这里的关键点:

    默认使用的环境 ID(比如:default="development")。
    每个 environment 元素定义的环境 ID(比如:id="development")。
    事务管理器的配置(比如:type="JDBC")。
    数据源的配置(比如:type="POOLED")。
    默认的环境和环境 ID 是自解释的,因此一目了然。 你可以对环境随意命名,但一定要保证默认的环境 ID 要匹配其中一个环境 ID。

    • transactionManager(事务管理器)

      在 MyBatis 中有两种类型的事务管理器(也就是 type=”[JDBC|MANAGED]”):

      • JDBC – 这个配置就是直接使用了 JDBC 的提交和回滚设置,它依赖于从数据源得到的连接来管理事务作用域。
      • MANAGED – 这个配置几乎没做什么。它从来不提交或回滚一个连接,而是让容器来管理事务的整个生命周期(比如 JEE 应用服务器的上下文)。 默认情况下它会关闭连接,然而一些容器并不希望这样,因此需要将 closeConnection 属性设置为 false 来阻止它默认的关闭行为。例如:
    <transactionManager type="MANAGED">
      <property name="closeConnection" value="false"/>
    </transactionManager>
    

    提示:如果你正在使用 Spring + MyBatis,则没有必要配置事务管理器, 因为 Spring 模块会使用自带的管理器来覆盖前面的配置。

    • dataSource(数据源)

    有三种内建的数据源类型(也就是 type=”[UNPOOLED|POOLED|JNDI]”):

    默认:UNPOOLED

    mappers(映射器)

    既然 MyBatis 的行为已经由上述元素配置完了,我们现在就要定义 SQL 映射语句了。 但是首先我们需要告诉 MyBatis 到哪里去找到这些语句。 Java 在自动查找这方面没有提供一个很好的方法,所以最佳的方式是告诉 MyBatis 到哪里去找映射文件。 你可以使用相对于类路径的资源引用, 或完全限定资源定位符(包括 file:/// 的 URL),或类名和包名等。例如:

    <!-- 使用相对于类路径的资源引用 -->
    <mappers>
      <mapper resource="org/mybatis/builder/AuthorMapper.xml"/>
      <mapper resource="org/mybatis/builder/BlogMapper.xml"/>
      <mapper resource="org/mybatis/builder/PostMapper.xml"/>
    </mappers>
    
    <!-- 使用完全限定资源定位符(URL) -->
    <mappers>
      <mapper url="file:///var/mappers/AuthorMapper.xml"/>
      <mapper url="file:///var/mappers/BlogMapper.xml"/>
      <mapper url="file:///var/mappers/PostMapper.xml"/>
    </mappers>
    
    <!-- 使用映射器接口实现类的完全限定类名 -->
    <mappers>
      <mapper class="org.mybatis.builder.AuthorMapper"/>
      <mapper class="org.mybatis.builder.BlogMapper"/>
      <mapper class="org.mybatis.builder.PostMapper"/>
    </mappers>
    
    <!-- 将包内的映射器接口实现全部注册为映射器 -->
    <mappers>
      <package name="org.mybatis.builder"/>
    </mappers>
    

    这些配置会告诉了 MyBatis 去哪里找映射文件

  • 相关阅读:
    数据结构(树链剖分):NOI2014 购票
    数据结构(树链剖分):COGS 2109. [NOIP2015] 运输计划
    数据结构(树链剖分,堆):HNOI 2016 network
    快速傅里叶变换(FFT):COGS 2216. 你猜是不是KMP
    生成树的计数(基尔霍夫矩阵):BZOJ 1002 [FJOI2007]轮状病毒
    数据结构(线段树):BZOJ 3126: [Usaco2013 Open]Photo
    数位DP:SPOJ KPSUM
    动态规划(状态压缩):BZOJ 2621 [Usaco2012 Mar]Cows in a Skyscraper
    数据结构(并查集):COGS 260. [NOI2002] 银河英雄传说
    生成树的计数(基尔霍夫矩阵):UVAoj 10766 Organising the Organisation SPOJ HIGH
  • 原文地址:https://www.cnblogs.com/whitespaces/p/12365511.html
Copyright © 2020-2023  润新知