Mybatis代码生成器和缓存

ARM64交叉编译实战:从aarch64-linux-gnu-gcc到银河麒麟部署 交叉编译是异构平台软件迁移的核心技术,本质是在x86_64主机上生成ARM64可执行代码的构建过程。其原理依赖于独立工具链(如aarch64-linux-gnu-gcc)、目标系统sysroot和严格匹配的ABI规范,而非简单替换CPU架构。技术价值在于支撑国产化替代、嵌入式开发与云边协同等关键场景,避免二进制不兼容、符号缺失或指令非法等运行时崩溃。典型应用包括Redis、Qt、OpenSSH等开源组件在飞腾、鲲鹏及银河麒麟V10 SP1等ARM64平台的自主构建与深度适配。本文聚焦真实工程断点,解析工具链 阅读详情

   今天的学习内容:
                    1.复习批量操作
                    2.代码生成器--使用(重点)
                    3.延迟加载(懒加载)
                    4.缓存:一级缓存和二级缓存

   1、Mybatis中的延迟加载(补充重点)
                    问题:在一对多中,当我们有一个用户,它有100个订单。
                        在查询用户的时候,要不要把关联的订单查出来?
                        在查询订单的时候,要不要把关联的用户查出来?

 解答:    
        在查询用户时,用户下的订单信息应该是,什么时候使用,什么时候查询的。
         在查询订单时,订单的所属用户信息应该是随着订单查询时一起查询出来。
                        
       什么是延迟加载
         在真正使用数据时才发起查询,不用的时候不查询。按需加载(懒加载)lazyloading
                    
           什么是立即加载
             不管用不用,只要一调用方法,马上发起查询。
                        
           在对应的四种表关系中:一对多,多对一,一对一,多对多
                一对多,多对多: 通常情况下我们都是采用延迟加载。
                 多对一,一对一: 通常情况下我们都是采用立即加载。

 2、Mybatis中的缓存
                    什么是缓存
                    存在于内存中的临时数据。

 为什么使用缓存
                   缓存原理:当执行了第一次查询以后,访问的数据会被放到缓存中;
                   当执行第二次查询的时候,它会先到缓存中查询是否有该数据,如果有就拿出来
                    减少和数据库的交互次数,提高执行效率。

  什么样的数据能使用缓存,什么样的数据不能使用
                        适用于缓存:
                            经常查询并且不经常改变的。
                            数据的正确与否对最终结果影响不大的。

 不适用于缓存:
                            经常改变的数据
                            数据的正确与否对最终结果影响很大的。
                            例如:商品的库存,银行的汇率,股市的牌价。

Mybatis中的一级缓存和二级缓存
  一级缓存:
它指的是Mybatis中SqlSession对象的缓存。系统默认提供,不用设置和修改。
当我们执行查询之后,查询的结果会同时存入到SqlSession为我们提供一块区域中。
该区域的结构是一个Map。当我们再次查询同样的数据,mybatis会先去sqlsession中
查询是否有,有的话直接拿出来用,如果没有就再次访问数据库查询。
当SqlSession对象消失时,mybatis的一级缓存也就消失了。

 一级缓存是 SqlSession 范围的缓存,当调用SqlSession 的修改,添加,删除,commit(),close(),clearCache()等方法时,就会清空一级缓存。

 二级缓存:
概念:由mybatis中的SqlSessionFactory对象的缓存,由同一个SqlSessionFactory对象创建的SqlSession共享其缓存。
SqlSessionFactory-->SqlSession

 二级缓存的使用步骤:


第一步:让Mybatis框架支持二级缓存(在mybatis-config. xm1中配置)
 <setting name="cacheEnabled" value="true"/>
                                
第二步:让当前的映射文件支持二级缓存(在UserMapper.xml中配置)
 <cache/>
<cache eviction="FIFO" flushInterval="60000" size="512" readOnly="true"/>
这个更高级的配置创建了一个 FIFO 缓存,每隔 60 秒刷新,
最多可以存储结果对象或列表的 512 个引用,而且返回的对象被认为是只读的
eviction属性:
LRU – 最近最少使用:移除最长时间不被使用的对象。(默认)

FIFO – 先进先出:按对象进入缓存的顺序来移除它们。
SOFT – 软引用:基于垃圾回收器状态和软引用规则移除对象。
WEAK – 弱引用:更积极地基于垃圾收集器状态和弱引用规则移除对象。
                                        
第三步:让当前的操作支持二级缓存(在select标签中配置 useCache="true")
对某一命名空间的语句,只会使用该命名空间的缓存进行缓存或刷新。 
但你可能会想要在多个命名空间中共享相同的缓存配置和实例。
要实现这种需求,你可以使用 cache-ref 元素来引用另一个缓存。
<cache-ref namespace="com.someone.application.data.SomeMapper"/>

  Mybatis 二级缓存脏读

1. 脏读的产生:
 Mybatis的二级缓存是和命名空间绑定的,所以通常情况下每一个Mapper映射文件都有
 自己的二级缓存,不同的mapper的二级缓存互不影响。这样的设计一不注意就会引起脏读,从而导致数据一致性的问题。引起脏读的操作通常发生在多表关联操作中,比如在两个不同的mapper中都涉及到同一个表的增删改查操作,当其中一个mapper对这张表进行查询操作,此时另一个mapper进行了更新操作刷新缓存,然后第一个mapper又查询了一次,那么这次查询出的数据是脏数据。出现脏读的原因是他们的操作的缓存并不是同一个。

 2. 脏读的避免:
     1. mapper中的操作以单表操作为主,避免在关联操作中使用mapper
      2. 在关联操作的mapper中使用参照缓存

 配置:
Mapper接口和XML配置使用的是同一个命名空间。因此他们只能使用同一个缓存。    
                                        <!--那么在XML中只能使用参照缓存-->
                                        <mapper namespace="com.mybatis.mapper.UserMapper">
                                            <cache-ref namespace="com.mybatis.mapper.OrdersMapper"/>
                                            <!—其他配置--> 
                                        </mapper>

二级缓存的使用条件:
 参照缓存可以解决关联较少的情况,如果有几十个表且关联复杂时,使用参照缓存意义不大。
   因此使用二级缓存需要满足一定的条件:
 1. 以查询为主的应用中,只有尽可能少的新增、删除和更新操作。
 2. 查询业务绝大多数都是对单表进行操作,由于很少存在互相关联的情况,因此不会出现脏数据。
3. 可以按业务划分对表进行分组时,如果关联的表比较少,可以通过参照缓存进行配置。

医学图像分割实战:U-Net数据管道与Dice损失调优指南 医学图像分割是计算机视觉与医疗影像分析的关键任务,目标是从CT、MRI或眼底图像中精确提取病灶、器官与血管区域。其核心原理基于深度学习中的编码器-解码器结构,U-Net凭借跳跃连接与对称设计,在小样本、小目标场景下依然能保留边界细节,成为该领域的超经典基线模型。在实际工程中,模型结构并非最大瓶颈,数据对齐、预处理策略、损失函数与评估指标的选择往往决定项目成败。针对医学影像前景占比极低的特点,Dice损失及混合损失能有效缓解类别不平衡,同时配合窗宽窗位映射、随机裁剪等数据管道优化,可显著提升分割精度。这类技术 阅读详情

相关推荐

AI Agent在智能投研中的实战:多智能体信息整合与策略生成

那么,什么是AI Agent?简单来说,AI Agent是一种能够感知环境、做出决策并采取行动的自主系统。自主性:能够在没有人类直接干预的情况下运行,对自己的行为和内部状态有一定的控制权。反应性:能够感知环境的变化,并及时做出反应。主动性:不仅能够对环境变化做出反应,还能够主动地设定目标并采取行动实现这些目标。社会性:能够与其他Agent(包括人类和人工智能)进行交互、协作和竞争。它们可以全天候不间断地监控和处理海量信息,大大提升信息处理能力;

AI大模型应用之禅 188

Mybatis代码生成器和pageHelper插件,以及Mybatis缓存

mybatis代码生成器,mybatis的分页插件,mybatis的缓存机制

Dumpling_skin的博客 397

系统回溯信息:遇到严重错误。已将回溯写入...PTC... raceback.log请将其发送给|技术支持|。

一、问题分析 这种问题一旦遇上了,如果忘了保存,直接心态爆炸。 该问题一般是显卡驱动的问题。ProE/Creo对显卡的基本要求是:支持Open_GL的3D显卡,分辨率为1024×768像素以上,推荐使用64位独立显卡,显存512MB以上。如若显卡性能太低,打开软件后易自动退出。 二、解决方法 <1>有一个非常简单的方法是:在config.pro文件中,改变图形配置graphics为” win32_gdi”而不是默认的“...

幕光倾城的博客 2万+

mybatis的代码生成器与缓存

mybatis的代码生成器--generator与mybatis的一级二级缓存

qq_59114219的博客 275

Vivado IP核与License许可全解析:从免费到收费,从评估到部署

本文全面解析Vivado IP核与License许可机制,从免费到收费IP核的选型指南到License的申请与部署策略。详细介绍了Xilinx官方IP核的优势与局限,第三方IP核的风险与应对,以及实战中的资源优化技巧和版本兼容性问题,帮助开发者高效利用Vivado工具链。

weixin_29169505的博客 367

2.Vivado软件基础操作

在本章节,我们以一个简单的计数器实例,介绍FPGA开发软件Vivado的基础操作流程,计数器实例程序的设计,在本课程中先不同掌握,后续课程将针对verilog编程进行讲解。 打开Vivado软件,会看到如下的界面: 点击如下图所示的: 点击Next> 将这个地方,设置路径,注意路径必须是英文路径。且文件夹名称第一个字符不能为数字。所有路径的名称的字符数量不能超过144个符号。 点击Next> 点击Next> 点...

FPGA/MATLAB学习教程/源码/项目合作开发 4478

mybatis框架的分页插件PageHelper、缓存以及mybatis的代码生成器:generator

作用: 帮你完成分页的功能?思考: 分页的sql语句。如何使用:(1)引入pageHelper的jar包 (2)mybatis中设置pageHelper的拦截器 (3)使用pageHelper 原理:作用;根据表帮你生成实体类、和dao以及xml映射文件。就是简单的CRUD。如何使用:MyBatis Generator Core – Introduction to MyBatis Generator/(1)引入mybatis-generator的依赖jar包。 (2)generator的配置文件

Ysuhang的博客 445

Spring Boot入门(13):Mybatis-Plus之条件构造器使用手册:精通让你快速提高查询效率的技巧!

化繁为简,MP 中条件构造器的使用,极其详细.

**My Coding Family** 3万+

分页插件PageHelper mybatis的代码生成器 generator mybatis的缓存

作用: 帮你完成分页的功能?使用:(1)引入pageHelper的jar包 (2)mybatis中设置pageHelper的拦截器 (3)使用pageHelper 3.mybatis的代码生成器--generator 作用: 根据表帮你生成实体类,和dao和xml映射文件。就是简单的CRUD。如何使用:(1)引入mybatis-generator的依赖jar包。 (2)generator的配置文件 (3)运行你的配置文件 去除生成的代码的英文注释缓存是存在于==内存中==的临

qq_55682798的博客 219

STM32+FreeRTOS环境下LwIP协议栈移植详解

本文详细介绍了在STM32F407ZGT6平台上移植轻量级TCP/IP协议栈LwIP的过程。使用FreeRTOS操作系统和LAN8720A以太网PHY芯片,通过STM32CubeMX生成基础工程配置。重点包括LwIP源码的获取与工程集成、关键配置文件的编写(如lwipopts.h)、操作系统适配层sys_arch.c的实现,以及以太网接口驱动ethernetif.c的移植。文章特别强调内存管理、中断优先级、硬件校验和等关键配置项的注意事项,为基于STM32和LwIP的嵌入式网络开发提供了实用参考。

电脑管家 754

JAVA:Spring Boot 集成 Forest 优雅的 HTTP 客户端

Forest是一个优雅的Java HTTP客户端框架,通过注解式声明简化HTTP接口调用。它支持多HTTP客户端、自动参数绑定、序列化、重试机制和拦截器等功能。本文演示了如何在Spring Boot中集成Forest,包括配置、接口定义和调用示例,还展示了POST请求、文件上传等常见场景。相比传统HTTP客户端,Forest具有声明简洁、功能完善的特点,特别适合微服务调用和第三方API对接,能显著提升开发效率和代码可维护性。

木头 427

分页插件PageHelper、Mybatis代码生成器generator、MyBatis一级、二级缓存

帮你完成分页功能 (2)mybatis.xml中设置pagehelper的拦截器 (3)使用pagehelper (4)原理: 自动生成实体类、dao层、xml映射文件(简单的crud) (2)generator的配置文件 配置在项目下,与src同级 2.3运行配置文件 三、MyBatis缓存 3.1什么是缓存: 缓存就是存储在内存中的临时数据减少和数据库的交互次数,提高执行效率经常查询并且不经常改变的;数据的正确与否对最终结果影响不大的;经常改变的数据;数据的正

weixin_51250766的博客 738

化工仿真软件:gPROMS二次开发_(1).gPROMS基础知识

在gPROMS中,模型是通过定义变量、参数和方程来创建的。模型可以是简单的单元操作,如换热器、反应器,也可以是复杂的系统,如整个化工流程。变量是模型中表示状态或输出的量。在gPROMS中,变量需要显式定义其类型和单位。# 定义变量VAR# 温度变量,单位为K# 压力变量,单位为Pa# 组分摩尔分数,数组变量参数是模型中表示常量或初始条件的量。参数同样需要定义其类型和单位。# 定义参数PAR# 理想气体常数,单位为J/(mol·K)# 反应器体积,单位为m^3# 初始摩尔数。

kkchenjj的博客 617

动态sql标签,分页插件,mybatis的缓存,mybatis--代码生成器的插件

mybatis完成动态的sql变化。搜索的条件在发生改变--sql语句也不是固定---会根据条件而改变。mybatis提供了哪些动态sql标签dao接口映射文件。

2401_82454653的博客 1172

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

mybatis04-分页插件、代码生成器、缓存

mybatis的分页及缓存以及mybatis的代码生成器的详细使用

weixin_48112109的博客 148

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

spring boot mybatis 项目框架源码 shiro 集成代码生成器 ehcache缓存

系统框架:springboot 2.0.6+ mybaits+maven bootstrap html5 jquery jsp jstl PC 浏览器用的 操作系统:windows linux mac 等搭建正确的java 运行环境才行 1.代码生成器:](单表、主表、明细表、树形表,快速开发利器) freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面、建表sql...

springcloudboot的博客 361

OV9734 DATASHEET,完整规格书

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

Mybatis的分页插件,代码生成器,一二级缓存.

作用:根据表帮你生成实体类,和dao和xml映射文件。就是简单的CRUD使用缓存减少和数据库的交互次数,提高执行效率。适合缓存:经常查询并且不经常改变的;数据的正确与否对最终结果影响不大的;不适合缓存:经常改变的数据;数据的正确与否对最终结果影响很大的;---数据安全性要求不高。 mybatis支持两种缓存(1)一级缓存----基于SqlSession级别的缓存。默认一级缓存是开启的,不能关闭。(2)二级缓存--基于SqlSessionFactory级别的缓存,它可以做到多个SqlSession共享数据。

JAVA_SR的博客 238

Java EE数据持久化框架 • 【第5章 MyBatis代码生成器和缓存配置】

5.1 配置MyBatis Generator 5.1.1 MyBatis Generator介绍 MyBatis在很大程度上大大降低了以前繁琐的JDBC代码,并且提供了大量的标签对SQL语句的支持,但是在操作不同数据表方面,仍然存在大量重复工作。 MyBatis的开发团队提供了一个很强大的代码生成器——MyBatis Generator(MyBatis生成器,简称MBG) MBG自动产生包含了数据库表对应的实体类、Mapper接口类、Mapper XML文件和Example对象等,这些代码文件中几

杨明金的博客 1万+

springboot mybatis 项目框架源码 shiro 集成代码生成器 ehcache缓存

1.代码生成器: [正反双向](单表、主表、明细表、树形表,快速开发利器)freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面、建表sql脚本、处理类、service等完整模块2.多数据源:(支持同时连接无数个数据库,可以不同的模块连接不同数的据库)支持N个数据源3.阿里数据库连接池druid,安全权限框架 shiro(菜单权限和按钮权限), 缓存框架 ehcache4.代码编...

weixin_33727510的博客 156

深度拆解select:从系统调用原理到性能陷阱与epoll迁移实战

在Linux网络编程中,IO多路复用是支撑高并发服务的关键技术,而select作为最早的系统调用接口,其设计思想与实现机制深刻影响了poll和epoll的演进。select通过fd_set位图向内核注册待监视的文件描述符,由内核统一轮询可读、可写与异常事件,这一过程涉及用户态与内核态的数据复制、超时时间管理以及等待队列唤醒机制。理解select的底层原理,有助于开发者厘清多路转接的本质,并回答为何高并发场景下select会遭遇性能瓶颈,而低并发、嵌入式或跨平台场景下它仍是简洁可靠的选择。从实际工程出发,掌握

weixin_34111790的博客 393

mybatis分页、缓存、生成器

mybatis分页、缓存、生成器

huyulong0612的博客 348
上一篇: mybatis插件开发
下一篇: 数据库设计原理与实战
Jarvis!
博客等级 码龄6年 822粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值