源码阅读
文章平均质量分 89
牵着蜗牛去散步_
这个作者很懒,什么都没留下…
展开
-
鉴别器discriminator - 按字段选择结果集
鉴别器和switch语句无论是在C语言还是Java里,相信大家都会对switch语句有一定的印象,switch语句是多分支选择语句,即根据不同的字段,选择执行不同的语句,最大的用处就是用来处理多分支选择的场景。以前初学C语言的时候,把多选择结构用多个嵌套的if语句来实现,导致代码可读性低,switch语句正好解决这一代码冗长的问题。这篇日志写的鉴别器,discriminator标签,就是类似switch语句,实现根据不同的字段来选择不同的resultMap进行映射。你可能会有疑问,查询之前我们的实体类和结转载 2021-03-11 16:14:45 · 938 阅读 · 0 评论 -
聊聊MyBatis缓存机制
聊聊MyBatis缓存机制前言MyBatis是常见的Java数据库访问层框架。在日常工作中,开发人员多数情况下是使用MyBatis的默认缓存配置,但是MyBatis缓存机制有一些不足之处,在使用中容易引起脏数据,形成一些潜在的隐患。个人在业务开发中也处理过一些由于MyBatis缓存引发的开发问题,带着个人的兴趣,希望从应用及源码的角度为读者梳理MyBatis缓存机制。本次分析中涉及到的代码和数据库表均放在GitHub上,地址: mybatis-cache-demo<i class="fa fa-li转载 2021-03-04 11:43:23 · 170 阅读 · 1 评论 -
Mybatis之sqlFragment(可复用的sql片段)
今天,我们将分析Mybatis之sqlFragment,可以翻译为sql片段,它的存在价值在于可复用sql片段,避免到处重复编写。在工作中,往往有这样的需求,对于同一个sql条件查询,首先需要统计记录条数,用以计算pageCount,然后再对结果进行分页查询显示,看下面一个例子。<sql id="studentProperties"><!--sql片段--> select stud_id as studId , name, email , dob , pho转载 2021-03-04 10:57:13 · 1344 阅读 · 1 评论 -
mybatis_3源码阅读日记_配置解析
上一章中已经了解到mybatis-config和mapper文件中使用的类似int/string/JDBC/POOLED等字面常量最终解析为具体的java类型都是在typeAliasRegistry构造器和Configuration构造器执行期间初始化的。本章主要分析每个配置具体是如何解析的属性标签解析(properties)解析properties的方法为:private void propertiesElement(XNode context) throws Exception { if原创 2021-01-19 20:40:15 · 151 阅读 · 1 评论 -
mybatis_3源码阅读日记_容器的加载与初始化
SqlSessionFactory的创建SqlSessionFactory是通过SqlSessionFactoryBuilder工厂类创建的,而不是直接使用构造器。SqlSessionFactoryBuilder的主要代码如下: //SqlSessionFactoryBuilder是一个建造者模式 public SqlSessionFactory build(InputStream inputStream) { return build(inputStream, null, null);原创 2021-01-05 19:50:49 · 290 阅读 · 3 评论 -
mybatis_3源码阅读日记_配置解析过程
简单的Mybatis应用。每一个MyBatis的应用程序都以一个SqlSessionFactory对象的实例为核心。SqlSessionFactory对象的实例可以又通过SqlSessionFactoryBuilder对象来获得。SqlSessionFactoryBuilder对象可以从XML配置文件加载配置信息,然后创建SqlSessionFactory。先看下面的例子主程序:package org.apache.test.model;import lombok.extern.slf4j.Slf原创 2021-01-05 16:36:04 · 123 阅读 · 1 评论