关于mybatis对session的解释

Mybatis 源码学习(二十一) —— session 包 MyBatis SqlSession MyBatis Configuration 阅读详情

首先关于mybatis对session的处理。

有状态就是有数据存储功能。有状态对象(Stateful Bean),就是有实例变量的对象  ,可以保存数据,是非线程安全的。在不同方法调用间不保留任何状态。

无状态就是一次操作,不能保存数据。无状态对象(Stateless Bean),就是没有实例变量的对象  .不能保存数据,是不变类,是线程安全的。

mybatis sqlsession对象

因为mybatis的sqlSesssion 执有Exector对象。所以他是一个有状态的对象。官方给出的解释也是说这个对象是非线程安全的。

但是mybatis对这个对象做了一个封装SqlSessionTemplate对象。SqlSessionTemplate对象对sqlsession实现线程安全是实现方式。就是用java的动态代理。

sqlsessionTemplate内部执有一个对sqlsession的一个代理对象。这个代理对象的实现就是生成一个新的sqlsession 这个sqlsession对象是从sqlsessionUtil.getsqlsession获取到的。

这个类是在org.mybatis.spring包下面的是集成了spring的 。   它获取sqlsession的时候会先从spring中去获取。如果开启了spring的事务管理。那么你本次调用的sqlsession就会是你这次会话一个共用的sqlsession, 如果你没有开启事务的话,每次更新就会是一个新的sqlsession

 

会用这个代理类进行操作

 

Mybatis获取Session的过程 package session; import java.io.IOException; import java.io.InputStream; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessio... 阅读详情

相关推荐

MyBatis获取Session的流程

我们需要为想使用mybatis连接的每一个数据库创建一个Environment对象。为了使用每一个环境,我们需要为每一个Environment创建一个SqlSessionFactory对象。而创建SQLSessionFactory对象,我们需要java.sql.DataSource和TransactionFactory实例。流程如图所示: 示例代码:public static SqlSessi

zhoucheng05_13的博客 3870

Mybatis之Session

你可以用下列语句简单地针对 Mapper 接口进行调用,代码如下: 示例: SmsSlaveDateMapper smsSlaveDateMapper = session.getMapper(SmsSlaveDateMapper.class); Long id = smsSlaveDateMapper.selectLastMsgId(); 第二种方式有许多优点。一、它不依赖字符串,可以减少

xiaotom5的专栏 6397

【DeepSeek+Office/WPS】智能办公新时代的全新利器

DeepSeek是一家专注于通用人工智能技术研发的中国科技公司,其核心产品DeepSeek-R1是一款开源的推理大模型,专注于复杂任务的高效处理,支持智能对话、文本生成、语义理解、计算推理、代码生成与补全等多种应用场景。作为国产、免费、开源且强大的AI平台,DeepSeek不仅致力于为终端用户提供高质量的智能服务,还为开发者提供了一整套完善的技术解决方案,帮助他们快速构建和部署自己的智能应用。

2303_77200324的博客 2791

MyBatis的SqlSession理解

MyBatis的SqlSession理解

weixin_45817985的博客 2220

Python办公自动化:用python-docx打造专业级Word表格边框(附完整代码)

本文深入探讨了如何利用python-docx库精细控制Word表格边框,实现办公自动化。通过解析底层XML结构,提供了通用的`set_cell_border`函数,并附上完整代码,帮助用户轻松打造符合商业规范的专业级表格,提升报告、合同等文档的生成效率与视觉效果。

weixin_29089057的博客 547

开关电源补偿设计避坑手册:为什么你的Buck电路总在轻载时振荡?

本文深入剖析了Buck电路在轻载时发生振荡的根本原因,并提供了专业的补偿设计避坑指南。文章指出,轻载下输出滤波器Q值飙升、DCM模式切换导致的小信号模型剧变是主要诱因,并详细对比了Type II与Type III补偿网络在宽负载范围内的表现差异。通过结合LTspice仿真与工程实践,指导工程师如何优化补偿环路设计,确保电源从满载到空载的全程稳定。

hadoop5ranger的博客 676

Mybatis的Transaction、session、Connection,Oracle的Session的关系

Mybatis Session Connection

ainiguo的博客 1750

中兴FTTR光猫变简易OLT:低成本搭建全光监控与局域网实战指南

本文详细介绍了如何将中兴FTTR光猫改造为简易OLT设备,实现低成本全光监控与局域网扩展。通过LOID认证、桥接模式设置及终端数破解,用户可利用二手设备搭建高性能光纤网络,适用于远程监控和长距离组网场景,显著降低部署成本。

chair的专栏 2039

mybatis分页案例

我是参考公司框架,以及网上资料整理的,希望大家能细化或者指点。 package com.botech.skynet.common; import java.sql.Connection; import java.util.Map; import java.util.Properties; import org.apache.commons.logging.Log; impo...

weixin_30284355的博客 101

第一百三十九回 介绍三个BLE包

本章回中主要介绍了Flutter中BLE的概念和操作方法,主要介绍了三个BLE包的功能和差异,以方便大家在BLE操作中选择不同的包。

talk_8的专栏 574

Python学习第1天:初识Python

Python 作为目前最流行的编程语言之一,凭借其简洁优雅的语法和强大的生态系统,成为了无数开发者的首选。本系列文章将带你从零基础入门,逐步掌握 Python 编程的核心技能。今天我们先来认识 Python,并安装好开发环境。Python(英式发音:/ˈpaɪθən/;美式发音:/ˈpaɪθɑːn/)是由荷兰人吉多·范罗苏姆(Guido von Rossum)发明的一种编程语言,是目前世界上最受欢迎和拥有最多用户的编程语言。

tigerhhzz的博客 434

Mybatis 缓存

一级缓存: Mybatis 的一级缓存的作用域是 session, 当 openSession()后, 如果执行相同的 SQL( 相同语句和参数) , Mybatis 不进行执行 SQL, 而是从缓存中命中返回。 二级缓存: Mybatis 的二级缓存的作用域是一个 mapper 的 namespace, 同一个 namespace 中查询 sql 可以从缓存中命中。 二级缓存是可以跨 sessi...

qq_42795915的博客 226

科研级YOLOv8 Neck革新:BiFPN双向特征金字塔赋能,让多尺度融合更高效的实战指南

在文件夹下新建BiFPN.py,将上述BiFPNLayer和BiFPN类的代码写入其中。这一步是为了让YOLOv8的代码架构能识别我们的自定义Neck模块。

m0_64661770的博客 153

mybatis 事务和缓存

mybatis缓存介绍 一级缓存 即session缓存,作用域为 Session,当 Session flush 或 close 之后,该Session中的所有 Cache 就将清空,默认开启。 二级缓存是mapper级别的缓存,多个SqlSession去操作同一个Mapper的sql语句,多个SqlSession可以共用二级缓存,二级缓存是跨SqlSession的 在业务...

weixin_30828379的博客 149

AMD机密计算虚拟机介绍

AMD机密计算虚拟机介绍

木简熙的博客 525

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

mybatis:二级缓存与ThreadLocal

ThreadLocal: 经常用于在一个线程上绑定一个对象,用来供在同一个线程里执行的文件共享 二级缓存 mybatis为程序员提供了缓存,用来缓存经常需要用到的数据。分为两种: 一级缓存:session缓存,可以将一些常用的数据(一般不会修改)的数据存放到session自带的缓存里面 每一个session都有自己的缓存,它们之间的缓存不共享。 二级缓存:也叫做SqlSessionFactory...

weixin_34212762的博客 365

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

mybatis的几点疑惑解答

session 怎么可以操作user.xml文件。 1.session的来源,session是我们的sesssionFactiory产生的对象。sessionFactory的来源是我们的xml对象。 我们将我们的xml变成了流对象来操控他。所谓的对话对象就是我们的一个操作人。内部所有的资源都可以在我们 的控制范围内。所以session可以控制我们的一切文件。 2. 此标签将我们查找后得到的

不以人人的意志为转义乃天道 234

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

mybatis的一级缓存使用以及禁用

可以看到,通过一个简单的查询,mybatis 使用了责任链模式,通过内存缓存当前查询结果,但是这个只适用于那种单体应用,分布式应用的话使用一级缓存不太好,有缓存不一致的问题。如果数据量大的话会造成内存溢出的情况发生。所以,针对项目部署的是集群环境,不要用一级缓存。如果是单体数据量不大可以使用。可以看到,如果 SqlCommandType 值为 SELECT,flushCache 的值的情况如下如果 flushCache 的值未设置,flushCache 值为 false,默认使用缓存。

zlpzlpzyd的专栏 1869

禁用 MyBatis 一级缓存

MyBatis 一级缓存默认开启,是 session 级别。如果要禁用一级缓存,就要设置为 statement 级别,即: <setting name="localCacheScope" value="SESSION"/> //STATEMENT mybatis: configuration: local-cache-scope: session //statement 一级缓存 cache-enabled: false //这里是二级缓存 原理其实

【欢迎关注公众号:冬瓜白】 5250

Mybatis

Mybatis session在一个用户进行访问时,只需要一个,用户可以使用该对话进行任何功能访问

超域的博客 97

mybatis的缓存(和spring整合)

mybatis 如果已经和spring整合了,mybatis的一级缓存就会失效 因为spring会自动关闭session 所以一级缓存比较鸡肋 通常会使用二级缓存 在mapper上加@CacheNamespace 如果查询和修改一个表中数据的方法不在一个mapper类中 但是如果在修改前查询并且在修改后查询时会发现查询出来的数据没有被修改,但是实际上数据库中的数据已经被修改了 但是如果查询和修改一...

ww0peo的博客 889

mybatis缓存源码解析

xml配置: yml配置: xml配置: yml配置: 创建sqlSession代理对象 默认使用 2. 创建代理对象 方法是个关键方法,决定是创建一个新的还是复用旧的 3. 创建或复用对象 如果在同一个事务中,则使用旧的对象 如果不在同一个事务中,则重新通过创建新的对象 如果不在同一个事务下,那么每次查询都会创建一个新的,那就看不到一级缓存的效果了,所以想要看效果,需要开启事务,保证几次查询用的是同一个 创建新的对象这个日志很明显 4. 创建对象 这里的就是二级缓存的开关,

一零贰肆的博客 628

一文搞懂MyBatis的一级缓存和二级缓存

在本篇文章中,将结合示例与源码,对MyBatis中的一级缓存和二级缓存进行说明。MyBatis3.5.6关于MyBatis的一级缓存,总结如下。MyBatis的一级缓存默认开启,且默认作用范围为SESSION,即一级缓存在一个会话中生效,也可以通过配置将作用范围设置为STATEMENT,让一级缓存仅针对当前执行的SQL语句生效;在同一个会话中,执行增删改操作会使本会话中的一级缓存失效;不同会话持有不同的一级缓存,本会话内的操作不会影响其它会话内的一级缓存。关于MyBatis的二级缓存,总结如下。

2301_76607156的博客 2915

关于Mybatis、缓存、延迟加载、执行流程、一篇搞定

本文对Mybatis核心关键点,缓存、执行流程、延迟加载进行全方位解读。

m0_65450831的博客 970

mybatis一级缓存

细看注释 /** * Unit test for simple App. * mybatis的缓存 * 一级缓存不受我们的配置 */ public class AppTest03 { SqlSessionFactory sessionFactory; @Before public void setUp() throws Exception { ...

小匠心的博客 152
上一篇: 关于java注解
下一篇: wsl linux 安装
Psuso_
博客等级 码龄10年 11粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值