Mybatis工具类的封装

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("修改失败!~");
		}
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值