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.工具类,连接数据库库的主要内容,如果未能解决你的问题,请参考以下文章

数据库连接工具类 数据库连接工具类——仅仅获得连接对象 ConnDB.java

工具类涉及数据库连接格式转换文件操作发送邮件等等

JDBC工具类连接数据库,模仿登录

java学习笔记数据库连接池与操作工具类

工具类DBUtil——数据库连接

JDBC工具类和数据库连接池