MyBatis配置文件如何解读,MyBatis为何不写Mapper接口实现类?
摘要:MyBatis核心配置文件详解 多环境 <!--一个环境对应一个数据库,开发环境和生产环境可以对应不同的环境 一般一个数据库对应一个sqlSessionFactory对象,一个sqlSessionFactory对象对应
MyBatis核心配置文件详解
多环境
<!--一个环境对应一个数据库,开发环境和生产环境可以对应不同的环境
一般一个数据库对应一个sqlSessionFactory对象,一个sqlSessionFactory对象对应一个环境
default表示默认环境-->
<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/spring6"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
<environment id="mybatisDB">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/spring1"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
那么java程序如何使用指定的环境呢?
public void testEnvironment() throws IOException {
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
// 没指定环境,默认使用mybatis-config.xml中default指定的环境
SqlSessionFactory sqlSessionFactory = builder.build(Resources.getResourceAsStream("mybatis-config.xml"));
// 指定环境为development,使用mybatis-config.xml中id为development的环境配置
SqlSessionFactory sqlSessionFactory2 = builder.build(Resources.getResourceAsStream("mybatis-config.xml"), "development");
}
dataSource数据源
dataSource的作用:为程序提供connection对象(凡是给程序提供connection对象的,都叫做数据源)。
数据源是一套规范,有JDK规定。
dataSource是一个接口。数据库连接池就是一个数据源。
type属性指定数据源类型。
<!-- type有三个值可选:POOLED、UNPOOLED和JNDI
UNPOOLED:表示不使用连接池,每次获取连接都会创建一个新的连接,使用完后需要手动关闭连接,否则会导致资源泄漏
适合于小型应用或者测试环境,不适合于生产环境,因为频繁创建和关闭连接会带来性能问题。
