本文主要是介绍枚举实现SqlSessionFactory单例实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
SqlSessionFactory
SqlSessionFactory 一旦被创建就应该在应用的运行期间一直存在,没有任何理由对它进行清除或重建。使用 SqlSessionFactory 的最佳实践是在应用运行期间不要重复创建多次,因此 SqlSessionFactory 的最佳作用域是应用作用域。最简单的就是使用单例模式或者静态单例模式。
以下是用枚举实现单例的代码:
package com.mybatisTest.db; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.IOException; import java.io.Reader;/*** 实现单例的SqlSessionFactory*/ public enum SqlSessionFactorySingleton {GETSQLSESSIONFACTORY("mybatis-config/Configuration.xml");private SqlSessionFactory sqlSeeionFactory;private String xmlPath;SqlSessionFactorySingleton(String xmlPath){this.xmlPath=xmlPath;}public SqlSessionFactory getSqlSeeionFactory(){if(sqlSeeionFactory==null){sqlSeeionFactory= new GetSqlSeeionFactory(xmlPath).getSqlSessionFactory();return sqlSeeionFactory;}else {return sqlSeeionFactory;}}private class GetSqlSeeionFactory{private String xmlPath;public GetSqlSeeionFactory(String xmlPath){this.xmlPath=xmlPath;}public SqlSessionFactory getSqlSessionFactory(){try {//通过配置文件获取数据库连接信息Reader resourceAsReader = Resources.getResourceAsReader(xmlPath);System.out.println("枚举单例创建SqlSessionFactory");//通过配置信息构建一个SqlSessionFactoryreturn new SqlSessionFactoryBuilder().build(resourceAsReader);} catch (IOException e) {e.printStackTrace();}return null;}} } 调用端:
SqlSessionFactory sqlSessionFactory= SqlSessionFactorySingleton.GETSQLSESSIONFACTORY.getSqlSeeionFactory();
备注:
需要引入mybatis的jar包或在pom.xml文件引入
<dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.4.5</version> </dependency>
这篇关于枚举实现SqlSessionFactory单例实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!