1. 程式人生 > >mybatis sqlSession管理工具類

mybatis sqlSession管理工具類

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();
    }

}

第五:執行結果:
這裡寫圖片描述