package com.baizhi.zcn.util;
import java.io.IOException;
import java.io.Reader;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
/**
* 作用:MybatisUtil 工具类
* 作者:張弨莮
* 版本:1.0
* 时间:2018-5-6上午9:00:02
*/
public class MybatisUtil {
private static SqlSessionFactory sqlSessionFactory;
private static final ThreadLocal<SqlSession> t = new ThreadLocal<SqlSession>();
static{
try {
Reader resourceAsReader = Resources.getResourceAsReader("mybatis-config.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsReader);
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 返回sqlSession
*/
public static SqlSession getSqlSession(){
SqlSession sqlSession = t.get();
if(sqlSession==null){
sqlSession = sqlSessionFactory.openSession();
t.set(sqlSession);
}
return sqlSession;
}
/**
* 关闭sqlSession
*/
public static void close(){
SqlSession sqlSession = t.get();
if(sqlSession==null){
sqlSession.close();
t.remove();
}
}
/**
* 提交事务
*/
public static void commit(){
getSqlSession().commit();
close();
}
/**
* 回滚事务
*/
public static void rollback(){
getSqlSession().rollback();
close();
}
}
业务成方法调用样例:
/* (non-Javadoc)修改用户状态
* @see com.baizhi.zcn.service.UserService#update(com.baizhi.zcn.entity.User)
*/
@Override
public void update(User user) {
try{
SqlSession sqlSession = MybatisUtil.getSqlSession();
UserDao userDao = sqlSession.getMapper(UserDao.class);
userDao.update(user);
MybatisUtil.commit();
}catch(Exception e){
MybatisUtil.rollback();
e.printStackTrace();
throw new RuntimeException("修改失败!~");
}
}