工具类源码
package com.baizhi.util; import java.io.IOException; import java.io.InputStream; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; /** *本工具类有五个方法 * 1.打开资源 openSession方法 * 2.释放资源 也就是关闭资源 * 3.返回dao实现类对象 * 4.提交事务 * 5.事务回滚 * * * 工具类获取Sqlsession的步骤 * * * 读取配置文件 在mybatis-config.xml中 * 创建SqlsessionFactory * 创建Sqlsession * 获取dao实现类对象(这两步骤在测试类中实现)或者在service中获取 * 测试方发 * */ public class MybatisUtil { private static SqlSessionFactory factory = null; static{ InputStream in = null; try { in = Resources.getResourceAsStream("mybatis-config.xml"); factory = new SqlSessionFactoryBuilder().build(in); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException("初始化工厂失败!~"); }finally{ try {in.close(); } catch (IOException e) { e.printStackTrace(); } } } private static ThreadLocal<SqlSession> tl = new ThreadLocal<SqlSession>(); public static SqlSession openSession(){ SqlSession sqlSession = tl.get(); if(sqlSession==null){ sqlSession = factory.openSession(); tl.set(sqlSession); } return sqlSession; } public static void close(){ SqlSession sqlSession = openSession(); sqlSession.close(); tl.remove(); } public static <T> T getMapper(Class<T> c) { SqlSession sqlSession = openSession(); T t = sqlSession.getMapper(c); return t; } public static void commit(){ openSession().commit(); } public static void rollback(){ openSession().rollback(); } }
service调用
package com.baizhi.service; import java.util.ArrayList; import java.util.List; import com.baizhi.dao.UserDAO; import com.baizhi.entity.User; import com.baizhi.util.*; public class UserServiceImpl implements UserService { @Override public List<User> queryAll() { List<User> users = new ArrayList<User>(); try{ UserDAO userDAO = MybatisUtil.getMapper(UserDAO.class); users = userDAO.selectAll(); return users; } catch(Exception e) { e.printStackTrace(); return null; }finally{ MybatisUtil.close(); } } }