- SSM开发实战教程(Spring+Spring MVC+MyBatis)
- 李西明 陈立为主编
- 655字
- 2021-04-01 04:02:21
1.5 使用工具类简化第一个项目
上面的案例实现了数据的查询操作,如果还要实现添加、删除、修改等操作,则实现步骤类似。由于每一次执行SqlSession的方法前,均需先读取主配置文件,再创建SqlSessionFactory会话工厂,最后创建SqlSession对象,这一系列过程比较烦琐,所以可以将获取SqlSession对象的一系列程序代码封装定义为一个工具类方法getSession(),放在单独的一个类MyBatisUtil中,将来只要调用这个方法,即可获取SqlSession对象,从而简化所有的增删改查操作。
项目案例:使用工具类 MyBatisUtil 简化第1个项目的 DAO 层实现类 StudentDaoImpl 的findAllStudents方法。(项目源码参见本书配套资源:第1章/工具类简化第1个mybatis项目/mybatis12)
实现步骤:
(1)复制第一个项目mybatis11为mybatis12,新建包com.lifeng.utils,新建类MyBatisUtil.java,代码如下。该类提供两个方法,一个用来获取SqlSession对象,一个用来关闭SqlSession对象。
【注意】项目复制粘贴后还需用鼠标右键单击粘贴后的新项目,然后单击 Properties,选择 Web Project Settings,在Context root中更改旧项目名称为新项目名称。
public class MyBatisUtil {
private MyBatisUtil(){
}
private static final String RESOURCE = "mybatis-config.xml";
private static SqlSessionFactory sqlSessionFactory = null;
private static ThreadLocal<SqlSession> threadLocal = new ThreadLocal<SqlSession>();
static {
Reader reader = null;
try {
reader = Resources.getResourceAsReader(RESOURCE);
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
sqlSessionFactory = builder.build(reader);
} catch (Exception e1) {
e1.printStackTrace();
throw new ExceptionInInitializerError("初始化MyBatis失败,请检查配置文件或数据库");
}
}
public static SqlSessionFactory getSqlSessionFactory(){
return sqlSessionFactory;
}
public static SqlSession getSession(){
SqlSession session = threadLocal.get();
// 如果session为null,则打开一个新的session
if (session == null){
session = (sqlSessionFactory !=null) ?sqlSessionFactory.openSession():null;
threadLocal.set(session);
}
return session;
}
public static void closeSession(){
SqlSession session = (SqlSession) threadLocal.get();
threadLocal.set(null);
if (session !=null){
session.close();
}
}
}
以上代码无须死记,只是工具而已,复制借用过来即可。
【注意】将来使用Spring整合MyBatis后,这个工具类将不再使用,而是用Spring提供的工具代替。
(2)修改接口IStudentDao的实现类StudentDaoImpl,代码如下:

对比原来的findAllStudents方法,现在的findAllStudents方法的代码简化了不少,其他方面没变化。运行该测试类可得到同样的效果。其他增删改查的方法都可这样做,将大大减少代码冗余。