![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Mybatis
文章平均质量分 86
程序猿洞晓
不忘初心,方得始终。
展开
-
ORM框架之Mybatis(九):二级缓存源码的装饰器模式应用
mybatis有一级和二级两个缓存,在默认的情况下一级缓存是开启的,但是二级缓存是关闭的需要自己去配置,首先是在mybatis-config.xml配置文件中打开二级缓存的总开关,然后就是在每个Mapper.xml文件中开启对应的二级缓存,因为二级缓存是基于命名空间,也可以变相的理解为基于一个Mapper.xml文件。在cache的标签里面对缓存的清理的策略有很多种,比如FIFO的先进先出策略,比如LRU的最少使用策略等。每种策略都对应一个类,如何创建这些类?还有mybatis还实现了阻塞队列版缓存,使用了原创 2022-03-14 10:03:54 · 222 阅读 · 0 评论 -
ORM框架之Mybatis(八):mybatis基础代码的了解和源码跟踪
mybatis使用在日常开发中很简单,基本没有门槛,都是和Spring直接集成,然后把之前的一些配置copy到spring的配置文件中就可以使用。具体mybatis的配置文件加载代码,已经SqlSession执行的细节都被封装到了框架中,符合面向对象编程,但是存在一个问题就是那些细节的代码慢慢都被遗忘。写这个博客就是记录一下,以后忘记可以看看。仅此而已。Mybatis配置文件的读取和SqlSessionFactory的构建在mybatis中加载的基本的顺序是读取配置文件,然后构建SqlSessionFa原创 2022-03-14 10:02:15 · 289 阅读 · 0 评论 -
ORM框架之Mybatis(七):configuration配置源码初探
建造者模式是Java基本设计模式的一种,是经常被使用到的。比如在开发过程中经常使用的lambok插件,在实体类上加上@Builder就可以使用建造者模式方式构建实体对象。这mybatis中同样也使用到了这种设计模式,但是不是使用的lambok插件。在读取配置文件的时候,需要读取各种类型的标签,让构造器和标签对应,可以将标签的属性及相关的值放到构建器中,然后由构建器构建一个对象,这个对象中封装了标签的信息,提供后续使用。其实里面还使用到装饰者模式,这篇文章先不说,后续出文再具体说装饰者模式。可以剧透一下,在原创 2022-03-14 10:01:12 · 237 阅读 · 0 评论 -
ORM框架之Mybatis(六):logging源码实现分析
mybatis框架源码的实现相对spring来说要简单的很多,模块的分工也很明确,每个模块的代码量也不是很大,比较容易阅读,如果你对设计模式很了解的话。里面用到很多设计模式,如工厂模式、代理模式、装饰器模式、适配器模式等等,都是值得平时开发学习和借鉴的,都说高手的代码都是向高级框架靠拢,谁知道他是自己设计还是看了源码学习的呢,对不?mybatis的模块比较多,如对外的用SqlSession、内部底层日志logging、数据源模块、反射等,这一篇来看mybatis源码中最简单的部分logging日志。这个模原创 2022-03-14 09:59:44 · 155 阅读 · 0 评论 -
ORM框架之Mybatis(五):一级缓存和二级缓存初步认识
Mybatis本身提供了两个级别的缓存分别是一级缓存的二级缓存,两个缓存的实现原理都是相同的,不同的是两种缓存的作用域不同,一级缓存作用域是一个SqlSession的生命周期,SqLSession发生了flush或者close,缓存就会被清空,而二级缓存的作用域是命名空间(namespace)级别,一个命名空间下的select查询都会存在同一个二级缓存中,即使多个SqlSession都是可以共用的。另外如果作用域内进行了CUD操作,都会将缓存中的数据清理掉,这个是两个级别缓存相同的。一级缓存一级缓存的生原创 2022-03-14 09:58:03 · 879 阅读 · 0 评论 -
ORM框架之Mybatis(四):映射文件resultMap标签详解
Mybatis的映射文件中顶级的标签并不多,之前有说过select、update、delete、insert、sql等标签,resultMap在之前的文章也有提过,但是当时也是简单的提过,其实这个标签里面的内容很多,可简单可复杂。正常开发中简单的基本都在使用,但是涉及到复杂的用的就少啦。association实现一对一的查询,collection实现一对多的查询,discriminator实现鉴别器的功能,也就是根据不同的条件实现不同的关联查询。为什么说用到这些复杂的内容很少呢。以前在项目上性能要求不是很原创 2022-03-14 09:56:28 · 1472 阅读 · 0 评论 -
ORM框架之Mybatis(三):动态SQL和批处理
看着标题感觉很高大上,实际上的确不算low。动态SQL是一些标签对动态拼接SQL操作的优化,使代码更加的优雅、简洁。再就是批处理,常用的就是foreach标签,但是还有另一种方式也是可以了解一下的,虽然在实际开发上不怎么用,但是知道还是必须滴,从功利来说,面试要是被问到可以用来做加分项,从心理上来说,同事间聊起来可以……。if标签if标签在开发过程用的最多,因为要做一些字段的非空等校验,保证SQL的正确性。看个例子:<select id = "selectUser" parameterType=原创 2022-03-14 09:55:05 · 823 阅读 · 0 评论 -
ORM框架之Mybatis(二):映射文件
上一篇博客写的是Mybatis基础配置文件。这一篇我们来聊一聊Mybatis的映射文件。Mybatis的mapper映射文件中有很多常用的标签,如insert、update、delete、select、resultMap、sql等,也会有很多属性,如resultType、reusltMap、parameterType、parameterMap、useGeneratedKeys、keyProperty等。相信这些在项目都有使用,但是这里还是要梳理一下(知识体系都是在不断梳理中完善和获得新知)。下面就直入主原创 2022-03-14 09:52:52 · 466 阅读 · 0 评论 -
ORM框架之Mybatis(一):基础配置
这篇文章说的是mybatis的入门,内容浅显,但是能够理解并完整的梳理出来却是不简单。下面就来一起看看。JDBC到ORM的更替最原始是使用JDBC和数据库建立连接,但是使用JDBC连接数据库做一系列操作的过程你还记得吗,你的记忆力还够用吗?这个对90%的开发小伙伴都是一个头疼的问题,因为现在的ORM框架(hibernate、mybatis)做的封装太好,让我们渐渐的遗忘了底层是怎么做的啦。原始的JDBCpublic void demoTest() { Connection conn = null;原创 2022-03-13 23:10:07 · 970 阅读 · 0 评论 -
单个工程中Spring+Mybatis连接多个数据库的配置(个人分享版本)
上一篇博客说到同一个问题,经过和朋友的研究已经参考网上的资料,现在给出一份更简洁的配置。情景:现在单个工程中需要连接两个库,这两个库在同一个mysql中,两个库都需要进行读写。解决:第一步:将spring和mybatis整合,这个过程就不具体演示了,在这个过程中创建了直接使用的五个配置文件、两个类、一个标识。五个配置文件:jdbc.propertis(数据库连接信息)app...原创 2015-10-28 10:29:00 · 43698 阅读 · 8 评论 -
单个工程中Spring+Mybatis连接多个数据库的配置(个人研究版本)
之前在解决一个项目连接数据库问题的时候在网上苦寻答案无果,于是显示自己研究,终于黄天不负有心,接先来我将分享一下配置的具体过程。此种配置并非是数据库的读写分离,而是连接两个库。情景:现在单个工程中需要连接两个库,这两个库在同一个mysql中,两个库都需要进行读写。解决:第一步:将spring和mybatis整合,这个过程就不具体演示了,在这个过程中创建了直接使用的五个配置文件。原创 2015-10-27 09:44:48 · 14355 阅读 · 1 评论