MyBatis单列工厂的实现

SqlSessionFactoryUtils

package com.utils;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder; import java.io.IOException;
import java.io.InputStream; /**
* @author: XDZY
* @date: 2018/8/8 14:50
* @description: SessionFactory工厂
*/
public class SqlSessionFactoryUtils {
private final static Class<SqlSessionFactoryUtils> LOCK = SqlSessionFactoryUtils.class; private static SqlSessionFactory sqlSessionFactory = null; private SqlSessionFactoryUtils() {
} public static SqlSessionFactory getSqlSessionFactory() {
synchronized (LOCK) {
if (sqlSessionFactory != null) {
return sqlSessionFactory;
}
String resource = "com/mybatis-config.xml";
InputStream inputStream;
try {
inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
return null;
}
return sqlSessionFactory;
}
} public static SqlSession openSqlSession() {
if (sqlSessionFactory == null) {
getSqlSessionFactory();
}
return sqlSessionFactory.openSession();
}
}

Test

package com.main;

import com.mapper.RoleMapper;
import com.pojo.Role;
import com.utils.SqlSessionFactoryUtils;
import org.apache.ibatis.session.SqlSession; /**
* @author: XDZY
* @date: 2018/8/8 15:12
* @description: 运行入口
*/
public class TestMain {
public static void main(String[] args) {
SqlSession sqlSession = null;
try {
sqlSession = SqlSessionFactoryUtils.openSqlSession();
RoleMapper roleMapper = sqlSession.getMapper(RoleMapper.class);
Role role = roleMapper.getRole(1L);
System.out.println(role.getRoleName());
} finally {
if (sqlSession != null) {
sqlSession.close();
}
}
}
}

最新文章

  1. 【读书】PHP程序员要读的书目(不断完善中)
  2. Unity性能优化(1)-官方教程The Profiler window翻译
  3. ORA-01502: index &#39;INDEX_NAME&#39; or partition of such index is in unusable state
  4. SP2-0618: 无法找到会话标识符。启用检查 PLUSTRACE 角色 SP2-0611: 启用 STATISTICS 报告时出错
  5. struts2-(2)HelloWorld
  6. HDU 1394Minimum Inversion Number 数状数组 逆序对数量和
  7. [开发笔记]-sqlite数据库在使用时遇到的奇葩问题记录
  8. C#调用R语言输出图片
  9. poco vs Boost
  10. cuda vector addition
  11. 如何使用XE2及更高版本中提供的自定义皮肤(样式)功能
  12. 关于SQL语句条件值写中文查不到的问题
  13. 友盟崩溃日志分析工具 - dSYMTools
  14. 新概念英语(1-29)Come in, Amy.
  15. springboot添加邮件发送及压缩功能
  16. 浅谈Kotlin(四):控制流
  17. configure编译选项
  18. SPOJ 694 DISUBSTR - Distinct Substrings
  19. 51Nod 1384 全排列
  20. Dapper,大规模分布式系统的跟踪系统

热门文章

  1. (转)Python中的split()函数的用法
  2. 二叉排序树思想及C语言实现
  3. EFCodeFirst 数据迁移问题~
  4. Slickflow.NET 开源工作流引擎基础介绍-.NET Core2.0 版本实现介绍 (转)
  5. 对于ESP、EBP寄存器的理解
  6. [转]Java内存溢出详解及解决方案
  7. .net core 共享 .Net Forms Authentication cookie
  8. CSS中的鼠标样式明细
  9. maven struts2工程StrutsPrepareAndExecuteFilter cannot be cast to javax.servlet.Filter
  10. 对react vd 性能的理解