zoukankan      html  css  js  c++  java
  • Mybatis-04

    Mybatis

      学会了使用Mybatis来调用数据库后,我们来了解并使用Mybatis的配置

      首先,先展示Mybatis的主要配置属性

    configuration(配置)
    properties(属性)
    settings(设置)
    typeAliases(类型别名)
    typeHandlers(类型处理器)
    objectFactory(对象工厂)
    plugins(插件)
    environments(环境配置)
    environment(环境变量)
    transactionManager(事务管理器)
    dataSource(数据源)
    databaseIdProvider(数据库厂商标识)
    mappers(映射器)

    环境配置

      虽然在展示Mybatis的配置时,只有一个环境,实则不然,其实Mybatis可以配置多套环境。不过Mybatis虽然可以配置多套环境,但是每个SqlSessionFactory 实例只能调用一个环境。

      事务管理器:一般事务管理器只有两个可以用:JDBC或者MANAGED (JDBC是使用JDBC管理事务机制,而MANAGED是使用web容器管理事务)

      数据源:一般数据源分三种:POOLED/UNPOOLED/JNDI (默认是POOLED[使用连接池的数据源]、JNDI[使用JNDI实现的数据源])

    属性Properties

      我们可以通过properties属性来引用配置文件,这样我们就可以实现动态替换数据,而不是在配置文件里重复写。

      例子:db.properties

    我们可以自己写一个数据库的配置文件,再调入到配置文件中。

      代码演示:

    db.properties

    driver=com.mysql.cj.jdbc.Driver
    url=jdbc:mysql:///customs?useSSL=true&useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8
    username=root
    password=1234

    配置文件

        <properties resource="db.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>

      从上面的代码可以看出,我们在写完数据库的配置文件后,可以在配置文件中,调用properties的属性引用外面的数据库配置文件。

    别名

      在配置文件中,有个叫typeAliases(类型别名)的属性,我们可以使用这个来解决一些名字比较长的类名等。

      例子:

        <!-- 使用别名后,我们可以在核心配置和SQL语句的参数类型中可以使用,第一个是比较详细的别名,第二个则是MyBatis 会在包名下面搜索需要的 Java Bean,在没有注解的情况下,会使用 Bean 的首字母小写的非限定类名来作为它的别名。 -->
        <typeAliases>
            <typeAlias type="com.charles.pojo.UserInfo" alias="User"/>
            <package name="com.charles.pojo"/>
        </typeAliases>

    一般情况下:

    在实体类比较少的时候,使用第一种方式

    实体类多的时候使用第二种方式

    设置

      用来改变Mybatis的运行行为

    完整的setting配置

    <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>

    映射器

      所谓的映射器就是我们配置文件中的mapper属性,它是用来绑定我们的SQL语句文件的。

      他有两个方法进行绑定,一个是class,另一个是resource。

    生命周期和作用域

      生命周期和作用域是最为重要的,如果错误使用,则会导致严重的并发问题。

    生命周期

      首先我们先用流程图来了解生命周期

      SqlSessionFactoryBuilder在创建SqlSessionFactory后就结束了。

      而SqlSessionFactory则会一直存在于运行期间,可以想象成一个数据库连接池,它起很大的作用。

      SqlSession 可以理解为一个连接池的请求,我们从测试类中就可以看出,我们利用它来获得业务。[调用后一定要关闭,防止资源被占用]

    作用域

      这里面SqlSessionFactory的作用域是一个应用作用域,SqlSession则是请求或方法作用域。

     

     

  • 相关阅读:
    Oracle Vm VirtualBox 搭建 yum 环境
    Vmware Workstation _linux yum 仓库搭建
    redhat5 设置静态ip
    管理表空间和数据文件
    表空间详解
    ocp linux 基础要点
    事务
    Hash哈希类型
    SortedSet有序集合类型
    set集合类型
  • 原文地址:https://www.cnblogs.com/Charles-H/p/Mybatis-04.html
Copyright © 2011-2022 走看看