首页 > 其他分享 >005. MyBatis介绍---02初始化工具类MyBatisUtils

005. MyBatis介绍---02初始化工具类MyBatisUtils

时间:2022-11-23 01:11:45浏览次数:44  
标签:02 sqlSessionFactory SqlSessionFactory --- SqlSession session 005 mybatis import

1.什么是SqlSessionFactory

 

 2. src/main/java/com/imooc/mybatis/utils/MyBatisUtils.java

package com.imooc.mybatis.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.Reader;

/**
 * MyBatisUtils工具类,创建全局唯一的SqlSessionFactory对象
 */
public class MyBatisUtils
{
    //利用static(静态)属于类不属于对象,且全局唯一
    private static SqlSessionFactory sqlSessionFactory = null;
    //利用静态块在初始化类时实例化sqlSessionFactory
    static {
        Reader reader = null;
        try {
            reader = Resources.getResourceAsReader("mybatis-config.xml");
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
        } catch (IOException e) {
            e.printStackTrace();
            //初始化错误时,通过抛出异常ExceptionInInitializerError通知调用者
            throw new ExceptionInInitializerError(e);
        }
    }

    /**
     * openSession 创建一个新的SqlSession对象
     * @return SqlSession对象
     */
    public static SqlSession openSession(){
        return sqlSessionFactory.openSession();
    }

    /**
     * 释放一个有效的SqlSession对象
     * @param session 准备释放SqlSession对象
     */
    public static void closeSession(SqlSession session){
        if(session != null){
            session.close();
        }
    }
}

3.测试方法

 @Test
    public void testSqlSessionFactory() throws IOException
    {
        //利用Reader加载classpath下的mybatis-config.xml核心配置文件
        Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
        //初始化SqlSessionFactory对象,同时解析mybatis-config.xml文件
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
        System.out.println("SessionFactory加载成功");
        SqlSession sqlSession = null;
        try
        {
            //创建SqlSession对象,SqlSession是JDBC的扩展类,用于与数据库交互
            sqlSession = sqlSessionFactory.openSession();
            //创建数据库连接(测试用)
            Connection connection = sqlSession.getConnection();
            System.out.println(connection);
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
        finally
        {
            if (sqlSession != null)
            {
                //如果type="POOLED",代表使用连接池,close则是将连接回收到连接池中
                //如果type="UNPOOLED",代表直连,close则会调用Connection.close()方法关闭连接
                sqlSession.close();
            }
        }
    }

 

标签:02,sqlSessionFactory,SqlSessionFactory,---,SqlSession,session,005,mybatis,import
From: https://www.cnblogs.com/LLL0617/p/16917035.html

相关文章

  • 关于新手在使用git过程中的基本问题--前端开发篇
    1.首先git是什么?git学名叫做分布式版本控制系统。它能做啥呢?想一想,你在写项目的时候,尤其是大型的协作项目,往往一个项目会经过很多次修改才上线,在这个过程中,你会写项目1.0......
  • 004. MyBatis基本使用---01MyBatis环境配置
    1.pom.xml<dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.11</version>......
  • Jupyter笔记[3]-词向量
    自然语言处理-词向量[https://www.paddlepaddle.org.cn/tutorials/projectdetail/3578658]在自然语言处理任务中,词向量(WordEmbedding)是表示自然语言里单词的一种方法,即......
  • SCC 和 BCC 题选做(+2-SAT 讲解)
    为了保证文章的整体简洁,代码就不放了。1.SCC1.luoguP2341[USACO03FALL/HAOI2006]受欢迎的牛G考虑一个SCC内的所有点互相可达,我们完全可以先缩点。那么能从其......
  • 300-Air724UG(4G全网通GPRS)开发-GPIO输出高低电平
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/LearnAir724UG"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p> 测试......
  • React路由---react-router-dom基本使用
    1.下载react-router-dom5的版本npmireact-router-dom@52.在index.js中从react-router-dom中引入BrowserRouter和HashRouterBrowserRouter使用历史模式history来管......
  • React路由---NavLink与路由重定向
    NavLink当我们希望给当前的路由添加一个样式的时候,可以使用NavLink模块来代替Link模块给NavLink添加activeClassName属性,属性名为class名,在样式中定义active样式App.j......
  • GL-Talking about rules 20221122
    TimeTalkingaboutrulesDidyouhavestrictrulestofollowwhenyouwereateenager?Discusswhatguidelinesamodernfamilyshouldfollow?Teenagersshouldn......
  • 003. Mybatis介绍---03单元测试与JUnit4
    1.JUnit4使用方法  2.pom.xml<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.1......
  • 面向对象综合应用--搬家具
    1、需求将小于房子剩余面积的家具摆放到房子中。2、分析步骤需求涉及零个事物:房子和家具,故被案例涉及两个类:房子类和家具类2.1定义类房子类:......