现在是
加载中...
加载中...
image
插件原理回顾在前面,我们通过MyBatis插件机制介绍与原理分析了MyBatis插件的基本原理,但是可能还只是理论上的分析,没有实战的锻炼可能理解的还是不够透彻。接下来,我们通过自定义插件实例来进一步深度理解MyBatis插件的插件机制。插件接口MyBatis插件接口-Interceptor有哪些方法?​intercept​方法,插件的核心方法​plugin​方法​setProperties​方法自定义插件现在,我们从零开始,设计实现一个自定义插件。新建一个Maven项目,然后导入Mybatis对应jar...
作者:Terwer 阅读数:93 评论数:0
发布于 6/13/2024, 5:35:05 AM
image
插件简介什么是插件插件是一种软件组件,可以在另一个软件程序中添加功能或特性。插件通常被设计成可以随时添加或删除的,而不影响主程序的功能。插件可以扩展软件程序的功能,这让用户可以根据自己的需求定制软件,提高工作效率。常见的插件包括浏览器插件、音频和视频编辑软件的特效插件、图形处理软件的滤镜插件等。MyBatis插件介绍MyBatis作为一个通用的DAO层框架,也提供了插件的机制,例如:我们可以用插件实现分页、分表、监控等功能。MyBatis在四大组件(Exector、StatmentHandler、Para...
作者:Terwer 阅读数:26 评论数:0
发布于 6/12/2024, 3:06:46 AM
回顾在前面,我们通过redis​集成了MyBatis​的二级缓存,MyBatis的二级缓存整合redis,接下来,我们来分析一下RedisCache​的源码。源码分析RedisCache主要是通过实现Cache接口来做的。数据存储和获取主要是通过操作jedis来实现。publicfinalclassRedisCacheimplementsCache{privatefinalReadWriteLockreadWriteLock=newDummyReadWriteLock();privateStringid;...
作者:Terwer 阅读数:14 评论数:0
发布于 6/11/2024, 5:59:09 AM
image
MyBatis自带的二级缓存存在的问题在前面我们使用@CacheNamespace​实现了深度剖析MyBatis的二级缓存,这个底层使用HashMap​来实现。在单机环境下没有问题,但是在分布式环境下就不行了。​​MyBatis二级缓存在分布式环境下的问题解决为了解决这个问题,可以使用分布式缓存保存MyBatis二级缓存的数据。​​怎么自定义MyBatis的二级缓存可以在@CacheNamespace​上面加上implementation,例如,默认的缓存可以写成:@CacheNamespace(impl...
作者:Terwer 阅读数:16 评论数:0
发布于 6/5/2024, 8:02:47 AM
image
二级缓存的原理MyBatis二级缓存的原理是什么?二级缓存的原理和一级缓存一样,第一次查询会将数据放到缓存中,然后第二次查询直接去缓存读取。但是一级缓存是基于SqlSession的,二级缓存是基于mapper的namespace的。也就是说,多个SqlSession可以共享同一个二级缓存区域。如果两个mapper的namespace相同,那么即使是两个mapper,这两个mapper执行sql查询的数据也将保存在相同的二级缓存区域中。​​如何使用二级缓存注意:User需要实现序列化接口。开启二级缓存和一级...
作者:Terwer 阅读数:217 评论数:0
发布于 5/15/2024, 2:48:07 AM
image
概述MyBatis的一级缓存是什么时候开启的?在MyBatis中,一级缓存是默认开启的。参考:MyBatis缓存的概念通过场景来理解:场景一1、在一个SqlSession中,对User表进行两次根据ID的查询,查看发出sql语句的情况。/***根据ID查询用户**@paramid*@return*/@Select(select*fromuserwhereid=#{id})UserfindUserById(Integerid);@Beforepublicvoidbefore()throwsException...
作者:Terwer 阅读数:257 评论数:0
发布于 5/15/2024, 2:31:38 AM
image
缓存回顾什么是缓存?缓存就是内存中的数据,常常来自对数据库查询结果的保存。使用缓存可以避免频繁与数据库交互,进而提高响应速度。MyBatis对缓存的支持MyBatis也提供了对缓存的支持,分为一级缓存和二级缓存。可以用下面的图来理解:​什么是MyBatis的一级缓存?一级缓存是SqlSession级别的缓存。在操作数据库时,需要构造SqlSession对象,在对象中有一个HashMap的数据结构用于存储缓存数据。不同的SqlSession之间缓存的数据区域(HashMap)是不同的。什么是MyBatis的...
作者:Terwer 阅读数:91 评论数:0
发布于 5/14/2024, 6:08:01 AM
image
xml配置方式实现复杂映射回顾​实现复杂映射我们之前可以在映射文件中通过配置来实现,使用注解开发后,我们可以通过@Results注解,@Result注解,@One注解和@Many注解组合完成复杂关系的配置。注解说明@Results代替的是标签,该注解中可以使用单个的@Result注解,也可以使用@Result集合。使用方式:@Results({@Result(),@Result()})或者@Results(@Result())@Result代替了标签和标签@Result中的属性介绍column:数据库中的...
作者:Terwer 阅读数:223 评论数:0
发布于 5/14/2024, 5:53:07 AM
image
问题复现//定义原始图片链接和新图片链接constimg=![image](http://127.0.0.1:6806/assets/image-20240330091153-5d8kt15.png)constnewImg=![image](http://onu1xvsy0.bkt.clouddn.com/test/20240330091641..png)letnewcontent=![image](http://127.0.0.1:6806/assets/image-20240330091153-5d8...
作者:Terwer 阅读数:817 评论数:0
发布于 3/30/2024, 3:25:05 AM
字体格式有太多选择,不幸的是始终没有一个能在所有的浏览器上通用。这意味着,你必须使用多种字体的方案来保持用户跨平台的一致性体验。本文内容如题,会依次介绍一下TTF、OTF、WOFF、EOT和SVG几种字体目前在Web上的情况。浏览器支持情况@Font-face目前浏览器的兼容性:Webkit/Safari(3.2+):TrueType/OpenTypeTT(.ttf)、OpenTypePS(.otf);Opera(10+):TrueType/OpenTypeTT(.ttf)、OpenTypePS(.otf...
作者:Terwer 阅读数:586 评论数:0
发布于 8/30/2022, 1:56:34 PM