定义一个 MybatisUtil 工具类,用于简化 MyBatis 的 SqlSession 获取过程。
- 导入所需的类:
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
Resources:这是 MyBatis 提供的一个工具类,用于加载配置文件等资源。
SqlSession:是 MyBatis 与数据库交互的核心接口,封装了数据库操作的方法。
SqlSessionFactory:这是 MyBatis 的核心工厂类,用于创建 SqlSession 对象。
SqlSessionFactoryBuilder:用于从配置文件创建 SqlSessionFactory 实例。
2. 静态块初始化 SqlSessionFactory:
private static SqlSessionFactory factory;
static {
try {
factory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader("mybatis-config.xml"));
} catch (IOException e) {
e.printStackTrace();
}
}
静态变量 factory:这个变量用于保存 SqlSessionFactory 的实例,SqlSessionFactory 是 MyBatis 处理数据库会话的工厂类。
静态代码块:当类被加载时,静态代码块会被执行一次。这里的静态块用来初始化 SqlSessionFactory。
Resources.getResourceAsReader("mybatis-config.xml"):这个方法从类路径中加载 mybatis-config.xml 配置文件,并返回一个 Reader(输入流)。
new SqlSessionFactoryBuilder().build(...):根据 mybatis-config.xml 配置文件,创建并初始化 SqlSessionFactory 对象。
注意:如果配置文件加载失败或出现其他异常,IOException 会被捕获并打印堆栈跟踪信息。
- getSession 方法:
java
public static SqlSession getSession() {
return factory.openSession(true);
}
getSession 方法:这个方法用于获取一个新的 SqlSession 实例。SqlSession 是 MyBatis 中用于执行 SQL 语句的对象,它封装了数据库的操作和事务管理。
factory.openSession(true):通过 SqlSessionFactory 获取一个新的 SqlSession。这里的 true 参数表示开启自动提交事务(即不需要手动提交事务,每次执行更新操作后自动提交)。