mybatis sqlSession管理工具類
阿新 • • 發佈:2019-01-29
mybatis會話集中管理:
第一:專案目錄結構:
第二:工具類的編寫:
package com.sun.mybatis.utils;
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;
/**
* session會話操作工具類
* SqlSessionFactoryUtil.java
* @author sunt
*
* 2017年3月13日下午5:21:07
*/
public class SqlSessionFactoryUtil {
/**
* 配置檔案的路徑
*/
private static String CFG_FILE_PATH = "mybatis.cfg.xml";
//使用ThreadLocal管理Mybatis中SqlSession物件
private static final ThreadLocal<SqlSession> threadLocal = new ThreadLocal<SqlSession>();
//讀取配置檔案的IO流物件
private static Reader reader = null;
//會話工廠
private static SqlSessionFactory sqlSessionFactory;
static{
try {
//載入配置檔案
reader = Resources.getResourceAsReader(CFG_FILE_PATH);
//構建會話工廠
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 構造器注入
*/
public SqlSessionFactoryUtil() {
}
/**
* 獲取連線
* 2017年3月13日下午5:40:35
* @return SqlSession
*/
public static SqlSession getSqlSession() {
SqlSession sqlSession = threadLocal.get();
if(null == sqlSession) {//沒有獲取到連線資訊
if(null == sqlSessionFactory) {//沒有開啟的連線
System.out.println("執行構建新的連線操作。。。");
rebuildSqlSessionFactory();
}
sqlSession = (null != sqlSessionFactory)?sqlSessionFactory.openSession(): null;
//儲存會話資訊
threadLocal.set(sqlSession);
}
return sqlSession;
}
/**
* 構建新的連線資訊
* 2017年3月13日下午5:46:24
* @return void
*/
public static void rebuildSqlSessionFactory() {
try {
reader = Resources.getResourceAsReader(CFG_FILE_PATH);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 關閉連線資訊
* 2017年3月13日下午5:51:48
* @return void
*/
public static void closeSqlSession() {
SqlSession sqlSession = threadLocal.get();
//取消儲存會話資訊
threadLocal.set(null);
if(null != sqlSession) {
System.out.println("執行關閉會話操作。。。");
sqlSession.close();
}
}
/**
* 獲取工廠會話物件
* 2017年3月13日下午5:54:43
* @return SqlSessionFactory
*/
public static SqlSessionFactory getSqlSessionFactory() {
return sqlSessionFactory;
}
/**
* 獲取讀取的配置檔案的資訊
* 2017年3月13日下午5:55:47
* @return Reader
*/
public static Reader getCfgInfo() {
return reader;
}
}
第三:pom檔案和具體的實體類參考:
pom檔案和具體的實體
第四:測試類:
package com.sun.mybatis.pojo;
import java.util.Date;
import org.junit.Test;
import com.sun.mybatis.utils.SqlSessionFactoryUtil;
/**
* 測試會話工具類
* MemberTest.java
* @author sunt
*
* 2017年3月13日下午4:39:20
*/
public class MemberTest2 {
/**
* 測試會話管理util
* 2017年3月13日下午5:58:31
* @return void
*/
@Test
public void testSessionManager() {
Member member = new Member();
member.setMid(Long.toString(System.currentTimeMillis()));
member.setAge(22);
member.setBirthday(new Date());
member.setName("小麗");
member.setNote("測試會還管理util");
member.setSalary(8888.00);
member.setSex("女");
//獲取會話資訊儲存資料
SqlSessionFactoryUtil.getSqlSession().insert("com.sun.sqlMap.MemberMapper.insert", member);
//關閉連線資訊
SqlSessionFactoryUtil.getSqlSession().commit();
SqlSessionFactoryUtil.getSqlSession().close();
}
}
第五:執行結果: