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"/>
-
外部文件-绝对路径
- 不推荐