1. mybatis-config.xml
首先MyBatis配置文件的名称为:mybatis-config.xml
- MyBatis采用XML格式配置数据库环境信息
- MyBatis环境配置标签为<environment>
- environment 包含数据库驱动、URL、用户名与密码
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 允许有多个environment ,通过default进行环境的修改,设置默认指向的数据库 -->
<environments default="dev">
<!-- 配置环境, 不同的环境不同的id名字 -->
<environment id="dev">
<!-- 采用JDBC方式对数据库事物进行commit / roolback -->
<transactionManager type="JDBC"></transactionManager>
<!-- 采用连接池的方式管理数据库连接 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/king?sueUnicode=true&characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
</configuration>
2. SqlSessionFactory
- SqlSessionFactory是Mybatis的核心对象,加载配置文件,完成mybatis前期初始化工作
- 用于初始化MyBatis,创建SqlSession对象,对数据表中数据进行增删改查工作
- 保证SqlSessionFactory在应用中全局唯一,通常通过静态类的方式对它进行初始化。
3. SqlSession
- SqlSession是MyBatis操作数据库的核心对象
- SqlSession使用JDBC方式与数据库交互
- SqlSession对象提供了数据表CRUD对应方法
public class MyBatisTestor {
@Test
public void testSqlSessionFactory(){
try {
// 利用Reader 加载classpath下的mybatis-config.xml核心配置文件
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
// 初始化SqlSessionsFactory 对象,同时解析mybatis-config.xml文件
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
System.out.println("SqlSessionFactory对象加载成功");
SqlSession sqlSession = null;
try{
//创建SqlSession对象,SqlSession是JDBC的扩展类,用于数据库的交互
sqlSession = sqlSessionFactory.openSession();
// 创建数据库连接(测试用), 正常开发时,是由mybatis自动调用的,不需要我们显示的调用
Connection connection = sqlSession.getConnection();
System.out.println(connection);
}catch( Exception e){
e.printStackTrace();
}finally{
if(sqlSession != null){
//如果type=“POOLED",代表使用连接池,close则是将链接回收到连接池中
// 如果type="UNPOOLED"代表直连, close则会调用Connection.close()方法关闭连接
sqlSession.close();
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}