public class MybatisUtils {
//获得SqlSession工厂
private static SqlSessionFactory factory;
//创建ThreadLocal绑定当前线程中的SqlSession对象
private static final ThreadLocal<SqlSession> tl = new ThreadLocal<SqlSession>();
static {
try {
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
factory = new SqlSessionFactoryBuilder().build(is);
} catch (Exception e) {
e.printStackTrace();
}
}
//获得连接(从tl中获得当前线程SqlSession)
private static SqlSession openSession(boolean AutoCommit){
SqlSession session = tl.get();
if(session == null){
session = factory.openSession(AutoCommit);
tl.set(session);
}
return session;
}
//提供设置手动提交的sqlsession对象(如果需要手动提交事务,则调用该方法)
public static SqlSession getSqlSession(){
return openSession(false);
}
//获得接口实现类对象(如果通过该方法获取实现类对象,则表示需要自动提交事务)
public static <T extends Object> T getMapper(Class<T> clazz){
SqlSession session = openSession(true);
return session.getMapper(clazz);
}
}
以上封装可以根据需要灵活调用自动事务提交与手动提交的方法。
浙公网安备 33010602011771号