MybatisSqlSessionFactory类来得到Mybatis的session对象

来源:互联网 发布:软件专业招聘 编辑:程序博客网 时间:2024/05/29 12:17
/** *  */package com.hotelmanagement.utils;import java.io.IOException;import java.io.InputStream;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;public class MybatisSqlSessionFactory {private static SqlSession session;private static SqlSessionFactory factory;/*静态块只进入一次 因为session的开销太大,session可以共享,所以进入一次即可*/static{InputStream is = null;try {is = Resources.getResourceAsStream("mybatis-config.xml");factory = new SqlSessionFactoryBuilder().build(is);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{if(is != null){try {is.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}/** *  */public MybatisSqlSessionFactory() {// TODO Auto-generated constructor stub}    //如果使用中session丢失重新获取public static void rebuildSqlSessionFactory(){InputStream is = null;try {is = Resources.getResourceAsStream("mybatis-config.xml");factory = new SqlSessionFactoryBuilder().build(is);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{if(is != null){try {is.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}/** * 获取SqlSession实例 * @return SqlSession */public static SqlSession getSession(){if(factory == null){rebuildSqlSessionFactory();}session = factory.openSession();return session;}/** * 释放资源 */public static void close(){if(session != null){session.close();}}}