SqlSession

Mybatis 常用的几个对象

三世轮回 提交于 2020-03-26 17:42:56
3 月,跳不动了?>>> 1、SqlSessionFactoryBuilder 这个类可以被实例化、使用和丢弃,一旦创建了 SqlSessionFactory,就不再需要它了。因此 SqlSessionFactoryBuilder 实例的最佳范围是方法范围(也就是局部方法变量)。你可以重用 SqlSessionFactoryBuilder 来创建多个 SqlSessionFactory 实例,但是最好还是不要让其一直存在以保证所有的 XML 解析资源开放给更重要的事情。那么 SqlSessionFactoryBuilder一旦使用它创建完了 SqlSessionFactory 就可以销毁了,这样也可以保证整个应用只有一个 SqlSessionFactory 2、SqlSessionFactory 每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为中心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先定制的 Configuration 的实例构建出 SqlSessionFactory 的实例。 可以从 XML 文件中构建 SqlSessionFactory ,也可以从 Java 程序而不是 XML

Mybatis源码概览(一)

余生颓废 提交于 2019-11-29 07:11:34
一般拿到源码会无从下手,我的基本思路一般就是根据一个基本的helloWorld Debug下去,把主线先大概理一遍,然后再具体分析细节,没有必要一个类一个类细看,看了也会忘掉。自己理源码的时候看不下去时,可以结合网上的分析文章,一边看别人的解析,一边自己对照源码。了解框架设计原理,以后项目中出了问题可以更容易定位。再往上一层面,以后自己可以根据需求扩展框架。 先执行个HelloWorld 去github上 clone Mybatis代码,然后再其测试源码里添加如下代码 示例代码,里面未贴出来的类自行补全。 String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); SqlSession session = sqlSessionFactory.openSession(true); try { //后面介绍mybatis通过动态代理来避免手工调用session,直接调用dao接口; //BlogDao mapper = session.getMapper

Spring Transaction + MyBatis SqlSession事务管理机制研究学习

僤鯓⒐⒋嵵緔 提交于 2019-11-27 01:57:01
原文地址: Spring Transaction + MyBatis SqlSession事务管理机制研究学习 线上的系统中,使用的是Spring+Mybatis+Mysql搭建的框架,由于客户需要,最近一直在对性能提升部分进行考虑,主要是涉及Mysql的一些重要参数的配置学习,以及Spring事务管理机制的学习,因为通过观察服务器日志,发现在这两部分的时候耗时比较严重,特别是进行mysql事务提交的时候,项目源码中使用了Spring的声明式事务,即通过@Transactional注解来控制事务的开启与提交,这两天看了一些关于Spring Transaction事务的一些文章,也debug了源码,总算有点心得和疑问,这里简单的整理一下。 在Spring的配置文件中,我们使用了"org.springframework.jdbc.datasource.DataSourceTransactionManager"对事务进行管理,翻开 DataSourceTransactionManager的源码,我们看到 DataSourceTransactionManager继承了AbstractPlatformTransactionManager(抽象的事务管理器), DataSourceTransactionManager 重写了其中的一些方法,具体每个方法的作用,限于篇幅 ,本文不再赘述 ,这里

mybatis源码分析之SqlSession的创建过程

旧城冷巷雨未停 提交于 2019-11-26 20:54:56
mybatis之SqlSessionFactory mybatis源码分析之Configuration mybatis源码分析之事务管理器 以上是之前的分析,在 mybatis源码分析之事务管理器 里分析到了事务管理器 SqlSession session = sqlSessionFactory.openSession(); //DefaultSqlSessionFactory里的openSession public SqlSession openSession() { return openSessionFromDataSource(configuration.getDefaultExecutorType(), null, false); } private SqlSession openSessionFromDataSource(ExecutorType execType, TransactionIsolationLevel level, boolean autoCommit) { Transaction tx = null; try { //根据配置获取环境 final Environment environment = configuration.getEnvironment(); //构建事务工厂 final TransactionFactory

Mybatis3.3.x技术内幕(一):SqlSession和SqlSessionFactory列传

旧巷老猫 提交于 2019-11-26 20:35:48
前言:我长大了,成年了,有需求,但我单身,所以我要讨个媳妇,要求是:漂亮、高挑、身材好、笑容甜美…… 和A相亲:漂亮,不够高挑。 和B相亲:高挑,身材不够好。 和C相亲:身材好,笑容不够甜美。 …… 好烦,没有符合要求的,我是一个痛苦的完美主义者,我怒了,我决定依照完美的幻想,自己造一个。但不知道我的决定是对是错,请佛指点,佛面带慈祥的微笑,曰:你不造一个,谁造一个? 于是,造之前,我给她取了一个清新典雅的名字: Mybatis3.3.x技术内幕 。 wocao,好耳熟的名字,好像在哪儿听过。 以上便是面对已有的那么多有关Mybatis源码分析的文章,而我为什么决定新造一个“ 东风铁甲 ”的故事。 一部经典的《Mybatis3.3.x技术内幕》,就从SqlSession和SqlSessionFactory说起。 ‍ 1. SqlSession和 SqlSessionFactory的接口定义 ‍ SqlSession: public interface SqlSession extends Closeable { <T> T selectOne(String var1); <T> T selectOne(String var1, Object var2); <E> List<E> selectList(String var1); <E> List<E> selectList

关于MyBatis sqlSession的一点整理

我是研究僧i 提交于 2019-11-26 15:50:42
原文地址: 关于MyBatis sqlSession的一点整理 工作中,需要学习一下MyBatis sqlSession的产生过程,翻看了mybatis-spring的源码,阅读了一些mybatis的相关doc,对mybatis sqlSession有了一些认知和理解,这里简单的总结和整理一下。 首先, 通过翻阅源码,我们来整理一下mybatis进行持久化操作时重要的几个类: SqlSessionFactoryBuilder:build方法创建SqlSessionFactory实例。 SqlSessionFactory:创建SqlSession实例的工厂。 SqlSession:用于执行持久化操作的对象, 类似于jdbc中的Connection。 SqlSessionTemplate:MyBatis 提供的 持久层访问模板化 的工具,线程安全 , 可通过构造参数或依赖注入SqlSessionFactory实例。 Hibernate是与MyBatis类似的orm框架,这里 与Hibernate进行一下对比,Hibernate中对于connection的管理,是通过以下几个重要的类: SessionFactory:创建Session实例的工厂,类似于MyBatis中的SqlSessionFactory。 Session:用来执行持久化操作的对象, 类似于jdbc中的Connection