MyBatisUtil.java.工具类,连接数据库库
Posted 如风105
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatisUtil.java.工具类,连接数据库库相关的知识,希望对你有一定的参考价值。
可以在每一个项目里直接使用
1 package com.yh.mb.dao; 2 3 import java.io.Reader; 4 5 import org.apache.ibatis.io.Resources; 6 import org.apache.ibatis.session.SqlSession; 7 import org.apache.ibatis.session.SqlSessionFactory; 8 import org.apache.ibatis.session.SqlSessionFactoryBuilder; 9 /** 10 * mybatis连接数据库的工具类 11 * @author Administrator 12 * 13 */ 14 public class MyBatisUtil { 15 private MyBatisUtil(){ 16 } 17 private static final String RESOURCE = "mybatis-config.xml"; 18 private static SqlSessionFactory sqlSessionFactory = null; 19 private static ThreadLocal<SqlSession> threadLocal = new ThreadLocal<SqlSession>(); 20 static { 21 Reader reader = null; 22 try { 23 reader = Resources.getResourceAsReader(RESOURCE); 24 SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); 25 sqlSessionFactory = builder.build(reader); 26 } catch (Exception e1) { 27 e1.printStackTrace(); 28 throw new ExceptionInInitializerError("初始化MyBatis错误,请????配置文件或数据库"); 29 30 } 31 } 32 public static SqlSessionFactory getSqlSessionFactory(){ 33 return sqlSessionFactory; 34 } 35 public static SqlSession getSession(){ 36 //sessionTL的get()方法根据当前线程返回其对应的线程内部变量?? 37 //也就是我们需要的Session,多线程情况下共享数据库链接是不安全的?? 38 //ThreadLocal保证了每个线程都有自己的Session?? 39 SqlSession session = threadLocal.get(); 40 // 如果session为null,则打开????新的session 41 if (session == null){ 42 session = (sqlSessionFactory !=null) ?sqlSessionFactory.openSession():null; 43 threadLocal.set(session); // 5 44 } 45 return session; 46 } 47 public static void closeSession(){ 48 SqlSession session = (SqlSession) threadLocal.get(); // 2 49 threadLocal.set(null); 50 if (session !=null){ 51 session.close(); 52 } 53 } 54 }
以上是关于MyBatisUtil.java.工具类,连接数据库库的主要内容,如果未能解决你的问题,请参考以下文章