Mybatis Java API - SqlSessionFactory

SqlSessionFactory​有六个用于创建 ​SqlSession​实例的方法。在选择其中一个方法时,通常会根据以下决策因素:

  • 事务:您是否希望对`SqlSession`使用事务范围,或者使用自动提交(在大多数数据库和/或JDBC驱动程序中通常意味着没有事务)?
  • 连接:您希望MyBatis从配置的数据源中获取连接,还是希望自己提供连接?
  • 执行:您希望MyBatis重复使用已准备好的语句(PreparedStatements)和/或批量更新(包括插入和删除)吗?

​openSession()​方法有多种重载形式,允许您选择在这些选项中任意组合。

java 复制代码
SqlSession openSession()
SqlSession openSession(boolean autoCommit)
SqlSession openSession(Connection connection)
SqlSession openSession(TransactionIsolationLevel level)
SqlSession openSession(ExecutorType execType, TransactionIsolationLevel level)
SqlSession openSession(ExecutorType execType)
SqlSession openSession(ExecutorType execType, boolean autoCommit)
SqlSession openSession(ExecutorType execType, Connection connection)
Configuration getConfiguration();

没有参数的默认 ​openSession()​方法将创建具有以下特征的 ​SqlSession​实例:

  • 将启动事务范围(即非自动提交)。
  • 将从配置的活动环境中的 ​DataSource实例中获取 ​Connection对象。
  • 事务隔离级别将是驱动程序或数据源使用的默认级别。
  • 不会重用 ​PreparedStatements,也不会批量更新。

大多数方法都是相当直观的。要启用自动提交,请将true作为可选的autoCommit参数传递。要提供自己的连接,请将Connection实例传递给connection参数。请注意,没有设置同时设置Connection和autoCommit的重载,因为MyBatis将使用提供的连接对象的当前设置。MyBatis使用一个Java枚举包装器(TransactionIsolationLevel)表示事务隔离级别,但除此之外,它们按预期工作,并支持JDBC的5个级别(NONE,READ_UNCOMMITTED,READ_COMMITTED,REPEATABLE_READ,SERIALIZABLE)。

​ExecutorType​是一个可能对您来说比较新的参数。该枚举定义了三个值:

  • ​ExecutorType.SIMPLE:该类型的执行器没有任何特殊操作。它会为每次执行SQL语句创建一个新的 ​PreparedStatement
  • ​ExecutorType.REUSE:该类型的执行器会重用已准备好的语句(​PreparedStatements)。
  • ​ExecutorType.BATCH:该执行器会将所有的更新语句进行批处理,并在必要时进行分隔,以确保在它们之间执行SELECT语句时有易于理解的行为。

注意:我们之前没有提到的还有一个 ​SqlSessionFactory​上的方法,那就是 ​getConfiguration()​。该方法将返回一个 ​Configuration​实例,您可以使用它在运行时对MyBatis配置进行自省。

注意:如果您曾经使用过较早版本的MyBatis,您可能会记得会话(session)、事务(transaction)和批处理(batch)都是独立的概念。但在当前版本中,这些概念已经整合在一个会话的范围内。您无需单独处理事务或批处理,就可以充分利用它们的优势。

相关推荐
VX_bysjlw9851 小时前
基于微信小程序的宠物用品商城系统-后端74346-计算机毕设原创(免费领源码+带部署教程)
java·redis·微信小程序·eclipse·mybatis·idea·微信开发者工具
hexu_blog6 小时前
springboot3集成shardingsphere4.0 分表分库
java·spring boot·mybatis
乐观的Terry6 小时前
9、发布系统-Webhook自动发布
java·spring boot·spring·spring cloud·mybatis
聆听。。花开雨落19 小时前
mybatis的typeHandler 作用
数据库·mybatis
天若有情6733 天前
SpringBoot4 + MyBatis 前后端分离实战|从零实现坏习惯管理系统,支持局域网手机访问CRUD
智能手机·mybatis
不能只会打代码3 天前
Day 011 — Spring 全家桶深度拆解
spring boot·mybatis·spring aop·spring mvc·spring ioc
憧憬成为web高手4 天前
皮卡丘靶场速通--sql 2
数据库·sql·mybatis
Java面试题总结5 天前
mybatis插件
java·tomcat·mybatis
Devin~Y6 天前
互联网大厂Java面试实战:Spring Boot、MyBatis、Redis、Kafka、JWT、Spring Cloud 与 AI 场景追问
java·spring boot·redis·spring cloud·kafka·mybatis·spring security
Ethan01076 天前
mybatis插件
mybatis