mybatis获取sqlsession的工具类(代码片段)

gaosj gaosj     2022-12-15     189

关键词:

 

package com.jyk.mybatis.util;

import java.io.IOException;
import java.io.Reader;
import java.sql.Connection;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

/*
 * MyBatis工具类
 */
public class MyBatisUtil 

    private static ThreadLocal<SqlSession> threadLocal = new
            ThreadLocal<SqlSession>();
    private static SqlSessionFactory sqlSessionFactory;
    
    //静态块加载src目录下的mybatis配置文件
    static
        try 
            Reader reader = Resources.getResourceAsReader("mybatis.xml");
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
         catch (IOException e) 
            e.printStackTrace();
        
    
    
    /*
     * 禁止外界通过new方法创建
     */
    private MyBatisUtil()
    
    /*
     * 获取sqlsession
     */
    public static SqlSession getSqlSession()
    
        //从当前线程中获取sqlSession对象
        SqlSession sqlSession = threadLocal.get();
        
        //判断SqlSession对象是否为空
        if(sqlSession==null)
        
            //在SqlSessionFactory对象非空的情况下,获取SqlSession对象
            sqlSession = sqlSessionFactory.openSession();
            //将SqlSession对象与当前线程绑定在一起
            threadLocal.set(sqlSession);
        
        
        return sqlSession;
    
    
    /*
     * 关闭sqlsession与当前线程分开
     */
    public static void closeSqlSession()
    
        //从当前线程中获取SqlSession对象
        SqlSession sqlSession = threadLocal.get();
        
        if(sqlSession != null)
        
            //关闭SqlSession对象
            sqlSession.close();
            //分开当前线程与SqlSession对象的关系,目的是尽早进行垃圾回收
            threadLocal.remove();
                
    
    
    /*
     * 测试方法
     */
    public static void main(String[] args) 
        Connection conn = MyBatisUtil.getSqlSession().getConnection();
        if(conn==null)
        
            System.out.println("连接为空");
        
        else
        
            System.out.println("连接不为空");
        
    

 

mybatis(代码片段)

...面需要一个配置文件mybatis-config.xml)​ 主要是为了获取SqlSessionFactory,以及从中获得SqlSession的实例2、编写配置文件mybatis-config.xml(环境准备)3、编写实体类4、编写接口***mapper.java5、编写***mapper.xml文件6、编写测试类@Testpublicvoidtest0... 查看详情

mybatis:sqlsession及其工厂类的作用域和生命周期

SqlSession及其工厂类的作用域和生命周期SqlSession创建流程:  使用SqlSessionFactoryBuilder创建SqlSessionFactory。使用SqlSessionFactory创建SqlSession。SqlSession可以通过SqlMapper.class进行数据库操作,或者直接使用SqlSession的方法输入SqlMapper... 查看详情

mybatis之sqlsessions

使用MyBatis的主要Java接口就是SqlSession。尽管你可以使用这个接口执行命令,获取映射器和管理事务。我们会讨论SqlSession本身更多,但是首先我们还是要了解如何获取一个SqlSession实例。SqlSessions是由SqlSessionFactory实例创建的。SqlSession... 查看详情

mybatis中sqlsession=factory.opensession();sqlsession是什么?

问题一:sqlSession到底是个什么东西,用sqlSession.selectOne(),执行查询比传统的jdbc减少了哪些步骤?SqlSessionsqlSession=null; Stringresource="mybatis-config.xml"; InputStreaminputStream=Resources.getResourceAsStream(resource); SqlSessionFactoryfactory=newSqlSe... 查看详情

mybatis配置

...e定义,返回结果用resultType定义,如果没有就不用定义1.获取SqlSession 2.调用SqlSession的selectList(“对应sql语句的id”,"看 查看详情

mybatis学习笔记-增删改的操作-对sqlsession的优化封装-优化代码

Mybatis学习笔记(二)-增删改的操作-对SqlSession的优化封装-优化代码1.对SqlSession的优化封装从上一篇可以看到测试类有大量的代码冗余,那接下来对SqlSession的创建过程进行封装​ 1.使用了静态代码块,随着类的加载而执行,而且... 查看详情

mybatis——运行原理

一、框架架构 1、先初始化SqlSessionFactory对象:MyBatis(8)——运行原理-初始化SqlSessionFactory2、使用sqlSessionFactory对象获取SqlSession对象:MyBatis(9)——运行原理-获取SqlSession对象3、使用SqlSession的getMapper方法获取接口的代理对... 查看详情

如何构建mybatis线程安全的sqlsession对象

...数据库中的记录。简介每个MyBatis应用程序主要都是使用SqlSessionFactory实例的,一个SqlSessionFactory实例可以通过SqlSessionFactoryBuilder获得。SqlSessionFactoryBuilder可以从一个xml配置文件或者一个预定义的配置类的实例获得。用xml文件构建S... 查看详情

四mybatis获取参数值的两种方式(代码片段)

...相关模板1.核心配置文件的模板 2.映射文件模板 3.封装SqlSessionUtils工具类packagecom.atguigu.mybatis.utils;importorg.apache.ibatis.io.Resources;importorg.apache.ibatis.session.SqlSession;importorg.apache.ibatis.session.SqlSessionFactory;importorg.apache.ibatis.session.SqlSessi... 查看详情

sqlsessiontemplate是如何保证mybatis中sqlsession的线程安全的?(代码片段)

一、DefaultSqlSession的线程不安全性在MyBatis架构中SqlSession是提供给外层调用的顶层接口,实现类有:DefaultSqlSession、SqlSessionManager以及mybatis-spring提供的实现SqlSessionTemplate。默认的实现类为DefaultSqlSession如。类图结构如下所... 查看详情

mybatis详解

...成不同的SQL语句。二、核心组件MyBatis的核心组件包括:SqlSessionFactory:SqlSessionFactory是MyBatis的核心接口,它用于创建SqlSession对象,SqlSession是MyBatis中用于执行SQL语句的接口。Configuration:Configuration是MyBatis的全局配置对象,它包含... 查看详情

mybatis--mybatis相应api(sqlsessionfactorybuildersqlsessionfactory(可以设置自动提交事务)sqlsession)(代码片段)

1.Mybatis相应API1.1SqlSession工厂构建器SqlSessionFactoryBuilder1.2SqlSession工厂对象SqlSessionFactory1.3SqlSession会话对象2.补充:了解SqlSessionFactory工厂类每个基于MyBatis的应用都是以一个SqlSessionFactory的实例为核心的。 SqlSessionFac 查看详情

springboot+mybatis

...batis官方用法中,介绍了使用Mybatis的过程:先创建出一个SqlSessionFactory实例通过SqlSessionFactory实例获取一个SqlSession实例SqlSession包含了对数据库执行命令的全部方法,此时我们可以通过SqlSession执行映射的SQL语句(Mapper)。二.使用... 查看详情

mybatis搭建

...置数据源3、创建工具类,将mybatis-config.xml配置文件写入SqlSessionFactory,打开数据连接,生成SqlSession4、创建pojo类,创建dao接口,创建mapping文件5、编写测试类实现 1、创建pojo类Userpublicclas 查看详情

mybatis简单使用方式总结

...件与映射文件使用部分:   1.用MyBatis的日志文件建立SqlSessionFactory对象(这是SqlSessionFactory     对象就知道了所有属性的配置和执行Sql的信息)   2.用SqlSessionFaction对象得到一个SqlSession对象   3.通过SqlSession对象对象... 查看详情

---mybatis3学习笔记补充

...就是资源,用来读取资源文件,读取MyBatis的主配置文件  SqlSession接口:用于持久化操作,一个Sqlsession对应着一次数据库会话,一次会话以SqlSession创建开始,SqlSession对象关闭结束  SqlSessionFa 查看详情

mybatis--01.基础

1.Mybatis的基本组成SqlSessionFactoryBuilder(构造器):它会根据配置信息或者代码来生成SqlSessionFactory(工厂接口)SqlSessionFactory:依靠工厂来生成SqlSession(SQLSession会话:相当于JDBC中的Connection对象)SqlSession:即可以发送SQL去执行并返回结果,也... 查看详情

09mybatis中sqlsession的使用

参考技术A本文将阐述SqlSession的使用。以上就是mybatis中Sqlsession的使用过程。 查看详情