1 抽取Mybatis工具类
public class MybatisUtil {
private static SqlSessionFactory sqlSessionFactory;
//创建ThreadLocal绑定当前线程中的SqlSession
private static final ThreadLocal<SqlSession> tl = new ThreadLocal<>();
static { //加载配置文件,并构建工厂
String resource = "mybatis-config.xml";
InputStream inputStream = null;
try {
inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 得到 sqlsession
* @return
*/
public static SqlSession openSession() {
SqlSession sqlSession = tl.get();
if (sqlSession == null) {
sqlSession = sqlSessionFactory.openSession();
tl.set(sqlSession);
}
return sqlSession;
}
/**
* 事务提交
*/
public static void commit() {
SqlSession sqlSession = openSession();
sqlSession.commit();
}
/**
* 事务回滚
*/
public static void rollback() {
SqlSession sqlSession = openSession();
sqlSession.rollback();
closeSession();
}
/**
* 关闭SqlSession
*/
public static void closeSession() {
SqlSession sqlSession = tl.get();
sqlSession.close();
commit();
}
/**
* 获得mapper对象
* @param mapper
* @param <T>
* @return
*/
public static <T> T getMapper(Class<T> mapper) {
SqlSession sqlSession = openSession();
return sqlSession.getMapper(mapper);
}
}
2 使用:
public class UtilTest {
public static void main(String[] args) {
UserMapper mapper = MybatisUtil.getMapper(UserMapper.class);
User user = mapper.findById(1);
System.out.println("------------------------------------");
System.out.println(user);
}
}