zoukankan      html  css  js  c++  java
  • MyBatis核心配置解析

    配置解析

    核心配置文件

    • mybatis-config.xml 系统核心配置文件
    • MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属性信息。
    • 能配置的内容如下:
    configuration(配置)
    properties(属性)
    settings(设置)
    typeAliases(类型别名)
    typeHandlers(类型处理器)
    objectFactory(对象工厂)
    plugins(插件)
    environments(环境配置)
    environment(环境变量)
    transactionManager(事务管理器)
    dataSource(数据源)
    databaseIdProvider(数据库厂商标识)
    mappers(映射器)
    <!-- 注意元素节点的顺序!顺序不对会报错 -->
    

    环境配置environments

    可以在environments中配置多套环境environment
    
    <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>
    
    • 配置MyBatis的多套运行环境,将SQL映射到多个不同的数据库上,必须指定其中一个为默认运行环境(通过default指定)

    • 子元素节点:environment

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

      • 数据源是必须配置的。

      • 有三种内建的数据源类型

        type="[UNPOOLED|POOLED|JNDI]")
        
      • unpooled:这个数据源的实现只是每次被请求时打开和关闭连接。

      • pooled:这种数据源的实现利用“池”的概念将 JDBC 连接对象组织起来 , 这是一种使得并发 Web 应用快速响应请求的流行处理方式。

      • jndi:这个数据源的实现是为了能在如 Spring 或应用服务器这类容器中使用,容器可以集中或在外部配置数据源,然后放置一个 JNDI 上下文的引用。

      • 数据源也有很多第三方的实现,比如dbcp,c3p0,druid等等....

      • transactionManager事务管理器有两种

        <transactionManager type="JDBC|MANAGED"/>
        <!--MANAGED这个配置几乎没做什么。它从来不提交或回滚一个连接,而是让容器来管理事务的整个生命周期-->
        
      • 这两种事务管理器类型都不需要设置任何属性。

      • 具体的一套环境,通过设置id进行区别,id保证唯一!

      • 子元素节点:transactionManager - [ 事务管理器 ]

        <!-- 语法 -->
        <transactionManager type="[ JDBC | MANAGED ]"/>
        
      • 子元素节点:数据源(dataSource)

    • MyBatis默认事务管理器是JDBC,连接池POOLED

    属性(properties)

    可以通过properties属性来引用配置文件
    
    1. 编写一个配置文件properties文件

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

      在MyBatis核心文件中引入(注意标签顺序,properties在最前面)

      <configuration>
          <properties resource="properties.properties">
      <!--        <property name="driver" value="jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&amp;useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>-->
          </properties>
          <environments default="development">
              <environment id="development">
                  <transactionManager type="JDBC"/>
                  <dataSource type="POOLED">
      <!--                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>-->
      <!--                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&amp;useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>-->
      <!--                <property name="username" value="root"/>-->
      <!--                <property name="password" value="Root1234"/>-->
                      <property name="driver" value="${driver}"/>
                      <property name="url" value="${url}"/>
                      <property name="username" value="${username}"/>
                      <property name="password" value="${password}"/>
                  </dataSource>
              </environment>
          </environments>
          <!--  每一个Mapper.xml都需要在MyBatis的核心配置文件中注册  -->
          <mappers>
              
          </mappers>
      </configuration>
      

    类型别名typeAliases

    typeAliases位于核心配置文件的第3个位置

    <typeAliases>
        <!--给一个类取别名-->
        <typeAlias type="com.maple.pojo.Employee" alias="emp" />
        <!--扫描一个包-->
    <!--扫描一个包,默认的别名就是这个类名,但首字母小写,可以在类名上用@Alias("别名")DIY-->
        <package name="com.maple.pojo.Employee"/>
        <!--使用基本类型时要用_类型如_int才是int而int其实是Integer-->
        <!--返回为Object、Map、List等时使用小写即可-->
    </typeAliases>
    

    settings设置

    • 下面是最常用的两个
    设置名 描述 有效值 默认值
    cacheEnabled 全局性地开启或关闭所有映射器配置文件中已配置的任何缓存。 true|false true
    lazyLoadingEnabled 延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。 特定关联关系中可通过设置 fetchType 属性来覆盖该项的开关状态。 true|false false
    • 一个配置完整的 settings 元素的示例如下:
    <settings>
     <setting name="cacheEnabled" value="true"/>
     <setting name="lazyLoadingEnabled" value="true"/>
     <setting name="multipleResultSetsEnabled" value="true"/>
     <setting name="useColumnLabel" value="true"/>
     <setting name="useGeneratedKeys" value="false"/>
     <setting name="autoMappingBehavior" value="PARTIAL"/>
     <setting name="autoMappingUnknownColumnBehavior" value="WARNING"/>
     <setting name="defaultExecutorType" value="SIMPLE"/>
     <setting name="defaultStatementTimeout" value="25"/>
     <setting name="defaultFetchSize" value="100"/>
     <setting name="safeRowBoundsEnabled" value="false"/>
     <setting name="mapUnderscoreToCamelCase" value="false"/>
     <setting name="localCacheScope" value="SESSION"/>
     <setting name="jdbcTypeForNull" value="OTHER"/>
     <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
    </settings>
    

    其它配置

    映射器(mappers)

    注册绑定我们的mapper文件

    <!-- 使用相对于类路径的资源引用 -->
    <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>
    
  • 相关阅读:
    JavaScript是单线程的
    JavaScript异步
    对象和文本间的转换
    json注意事项
    什么是 JSON?
    定义 Teacher() 构造器函数
    给每一个缩略图添加点击处理器
    新的事件触发机制被定义在 Document Object Model (DOM) Level 2 Events Specification,
    事件在浏览器窗口中
    在代码中做决定 — 条件在任何程序语言中
  • 原文地址:https://www.cnblogs.com/junlinsky/p/12810637.html
Copyright © 2011-2022 走看看