首页 > 数据库 >SqlSession与SqlSessionFactory

SqlSession与SqlSessionFactory

时间:2023-10-05 16:12:04浏览次数:41  
标签:SqlSessionFactory 实例 openSession ExecutorType SqlSession execType

2.2.3 SqlSession

SqlSession是MyBatis框架中极其重要的接口。SqlSession类似于JDBC中的Connection,它代表MyBatis和数据库的一次会话,主要用于执行持久化操作。SqlSession对象底层封装了JDBC连接,所以可以直接使用SqlSession对象执行已映射的SQL语句。SqlSession中包含了所有执行SQL语句的方法、提交或回滚事务的方法、获取映射器实例的方法。SqlSession不是线程安全的,每个线程都应有一个属于自己的SqlSession实例并且该实例不能够被共享。在使用SqlSession执行相关操作后应将其关闭,释放资源。

2.2.2 SqlSessionFactory

我们单从字面意思就可大概揣测出SqlSessionFactory接口的用途在于创建SqlSession。

SqlSessionFactory是单个数据库映射关系经过编译后的内存镜像,其核心作用就是创建SqlSession。SqlSessionFactory 一旦被创建就应伴随应用程序的运行而长期一直存在,我们没有任何理由对它进行清除或重建,多次重建 SqlSessionFactory 被视为一种代码“坏味道(bad smell)”。为避免资源的浪费和过度开销,在项目中最好使用单例模式创建和获取SqlSessionFactory。

SqlSessionFactory使用openSession( )方法创建SqlSession实例。使用openSession( )重载之后共有8个方法,代码如下:

SqlSession openSession();

SqlSession openSession(boolean autoCommit);

SqlSession openSession(Connection connection);

SqlSession openSession(TransactionIsolationLevel level);

SqlSession openSession(ExecutorType execType);

SqlSession openSession(ExecutorType execType, boolean autoCommit);

SqlSession openSession(ExecutorType execType, TransactionIsolationLevel level);

SqlSession openSession(ExecutorType execType, Connection connection);

在以上方法中我们使用最多的是第2个。利用该方法获得的SqlSession实例可帮助我们自动提交事务。也就是说,在该方式下执行insert、update、delete操作后不需执行commit( )提交事务亦可自动生效。

标签:SqlSessionFactory,实例,openSession,ExecutorType,SqlSession,execType
From: https://www.cnblogs.com/shangeg/p/17742523.html

相关文章

  • SQLSession 的线程安全
    SQLSession的线程安全性取决于具体的实现和配置方式。SQLSession是MyBatis框架中用于执行数据库操作的核心接口之一。以下是关于SQLSession线程安全性的一些注意事项:SqlSessionFactory的线程安全性:SqlSessionFactory是用于创建SQLSession的工厂类。通常情况下,SqlSessionF......
  • SqlSessionFactoryUtil工具类
    2023-09-03packagecom.hh.util;importorg.apache.ibatis.io.Resources;importorg.apache.ibatis.session.SqlSessionFactory;importorg.apache.ibatis.session.SqlSessionFactoryBuilder;importjava.io.IOException;importjava.io.InputStream;/***@autho......
  • Statement not bound, 使用MybatisPlus时的SqlSessionFactory和MybatisSqlSessionFact
    最近首次在真实项目中,实践用SpingBoot整合Mybatis、MybatisPlus、Spring、多数据源等常见SSH整合问题。遇到一个难题,MybatisPlus遇到了经典的问题“Statementnotbound”。如果是Mybatis,很容易解决,扫描到Mapper接口文件和Mapper.xml文件,肯定能搞定。这次整合进了MybatisPlus,之前......
  • pom.xml增加Mybatisplus的依赖后报错:Factory method 'sqlSessionFactory' threw excep
    出现上面的问题,是版本不匹配导致。<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.0</version></dependency&......
  • Property ‘sqlSessionFactory‘ or ‘sqlSessionTemplate‘ are required 问题解决
    以下是报错日志解决方案确认以下配置是否都存在:1、配置文件有写mybatis配置2、启动类里加上Mapper扫描的注解(指向自己mapper存放的位置)3、删除SpringBootApplication注解的exclude属性:@SpringBootApplication(exclude={DataSourceAutoConfiguration.class,DataSourc......
  • SqlSessionFactory工具类抽取
     packagecom.itheima.util;importorg.apache.ibatis.io.Resources;importorg.apache.ibatis.session.SqlSessionFactory;importorg.apache.ibatis.session.SqlSessionFactoryBuilder;importjava.io.IOException;importjava.io.InputStream;publicclassSqlS......
  • java springboot3 Property 'sqlSessionFactory' or 'sqlSessionTemplate' are requir
    老版本的mybatis-plus未适配springboot3解决办法:在pom.xml修改 mybatis-plus-boot-starter版本<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><vers......
  • Error creating bean with name 'sqlSessionFactory' defined in class path resource
    项目启动报错原因分析背景:system模块一个月未重启过,今天重启报数据源问题原因:这里报错的原因是数据源配置问题解决:数据源配置在nacos中,拿该模块的nacos数据源配置与项目启动成功的模块的数据源配置进行对比,检查出不同,改为一样即可......
  • MyBatis源码之SqlSession的解读
    MyBatis源码之SqlSession的解读1、SqlSession的简单使用首先先说一下SqlSession是什么?SqlSession其实就是对JDBC中Connection的一个封装,简化了对数据库的操作。当你获取到一个SqlSession的时候其实就是获取到一个数据库连接,可以进行数据库操作,SqlSession顾名思义就是一次与数据......
  • 编写javaweb用到的基本依赖,mybatis-config.xml代码,SqlSessionFactoryUtils.java
    这篇文章仅仅作为记录,供以后复制粘贴使用pom.xml<dependencies><!--Servlet--><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</vers......