MyBatis框架学习04 | 核心配置文件详解

100 阅读1分钟

environment

一个environment对应一个SqlSessionFactory
一个SqlSessionFactory对应一个数据库

  • 多环境的配置文件
    •  <environments default="development">
          <!-- 一个environment对应一个数据库 -->
          <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/powernode"/>
                  <property name="username" value="root"/>
                  <property name="password" value="root"/>
              </dataSource>
          </environment>
          <environment id="development2">
              <transactionManager type="JDBC"/>
              <dataSource type="POOLED">
                  <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                  <property name="url" value="jdbc:mysql://localhost:3306/powernode2"/>
                  <property name="username" value="root"/>
                  <property name="password" value="root"/>
              </dataSource>
          </environment>
      </environments>
      

transactionManager标签

在mybatis-config.xml配置文件中,有transactionManager子标签,表示设置MyBatis的事务管理器

  • MyBatis中有两个事务管理器

    • JDBC:交给原生JDBC管理setAutoComit(false);需要手动comit()提交
    • MANAGED:交给JEE处理,一般由JEE框架处理,如Spring
  • MyBatis底层有一个Transaction接口,实现两个事务

    • 如果type=“JDBC”,那么底层会实例化JdbcTransaciton对象
    • 如果type=“MANAGED”,那么底层会实例化ManagedTransaciton

dataSource标签

<dataSource type="POOLED">
	.......
</dataSource>
  • 作用

    • dataSource表示数据源,用来获取Connection对象
  • type属性可以填写三个值:

    • UNPOOLED:不使用数据库连接池,每次获取Connection都要创建一个新对象
    • POOLED:使用MyBatis自带的连接池
    • JNDI:连接第三方的数据源(如果自己手写的框架也可以用这个)
  • pooled和unpooled的区别

    • unpooled表示不使用连接池,每次请求过来都会创建一个Connection
    • pooled表示使用MyBatis自带的连接池:请求过来会先从连接池获取Connection对象
  • 使用连接池的好处

    • 池子内的Connection数量是固定的,比如池子的大小是5,如果5个都被占用,第六个要获取连接就要先等待,数量固定
    • 有新的请求会首先查找连接池,可以增加效率。

properties标签

  • 写在配置文件内(在configuration标签下有一个子标签,是用来设置变量的)

    • <properties name = "key" value = "value">
  • 外部文件-相对路径(在外部新建一个jdbc.properties)

    • <properties resource="jdbc.properties"/>
  • 外部文件-绝对路径

    • 不推荐