执行doQuery方法|学习笔记

简介: 快速学习执行doQuery方法

开发者学堂课程【高校精品课-厦门大学 -JavaEE 平台技术执行doQuery方法学习笔记,与课程紧密联系,让用户快速学习知识

课程地址:https://developer.aliyun.com/learning/course/80/detail/15952


执行doQuery方法


simple executer 中间的 do query 是怎样来实现,同样的第一件事情他首先要去拿配置信息,我们可以看到它在任何地方它干啥事儿都去拿配置信息,那它的配置信息其实他没有传进来,但他传的这个 map statements,可以看到 map settlement中间其实它是一个双向的关系,所以说从 map settlement中间他可以得到它的配置信息,得到配置信息的主要的目的是他要通过这个配置信息去产生它的查询语句,所以这是他得过来的配置信息,因为他所有的信息都放到配置信息中间,所以

他利用配置信息里头的内容去产生他要查询的东西,这里头其实有很多代码,拿到配置信息以后,调配置信息里头,每次调都会产生一个新的对象,产生一个 new

statement handle 这样一个对象,这样得到一个 handle,真正的处理是由 handle来完成的。

image.png

第三步,他自己写了一个私有的方法,这个私有方法是用来产生这个 statement,就是做预编译,Prepared statement 来做 SQL的预编译,然后把 handle的传进去,因为他利用 handle来做预编译,然后后面是写日志,用 message这个 get statements logo,我们知道在这个配置信息中间,其实有一个配置信息是可以把日志写出来,就是这 个statements logo,就是写Sql的这个日志,因为它真实做的时候就是通过这个 handler,它会掉这个 handler去编译这个 SQL语句,预编译完成以后,然后他再调这个handler去做查询,所以编译好的这个预编译的 statement,加上这个结果的处理方式,现在其实是没有结果的处理方式,然后去做查询,得到

的结果把它返回去,就是我们前面看到的 query的这样的一个方式

所以大家可以看到在整个这个图中间 configuration是他的核心,就是在容器起来的时候会把信息全部读近来,基本上各个部分进去的第一件事情读 configuration,因为所有东西都在 configuration里头,所以按照信息的原则,可以看到很多的职责都会放到 configuration里面去,去获得相应的东西,拿出来东西,再去调他的方法,这是 sample executer的一个执行过程,简单介绍了

mybetis的结构,通过这个方式,大家可以理解面向对象的设计到极致是什么样子

相关文章
|
人工智能 自然语言处理 运维
AIGC系列文章汇总
AIGC系列文章汇总(2024年3月8日更新)
3914 4
AIGC系列文章汇总
|
XML 存储 JSON
JSON、JSONObject 与 JSONArray 详细介绍及其应用方式
JSON、JSONObject 与 JSONArray 详细介绍及其应用方式
5440 3
JSON、JSONObject 与 JSONArray 详细介绍及其应用方式
|
3月前
|
缓存 Kubernetes 安全
Harness 顶级架构:DeerFlow 2.0 沙盒 Sandbox 架构设计、源码深度解析(史上最深 、价值 逆天)
Harness 顶级架构:DeerFlow 2.0 沙盒 Sandbox 架构设计、源码深度解析(史上最深 、价值 逆天)
Harness 顶级架构:DeerFlow 2.0 沙盒 Sandbox 架构设计、源码深度解析(史上最深 、价值 逆天)
|
SQL 存储 监控
Hologres诊断与优化快速入门
本文由赵红梅(Hologres PD)撰写,分享如何利用诊断与调优工具提升SQL和数据库异常的全方位诊断能力,增强实例稳定性。内容涵盖五个部分:事前通过监控指标实时监控;事中通过活跃日志发现并处理问题;事后通过慢Query日志与Query洞察诊断性能瓶颈;成本治理借助表管理工具优化资源;以及利用诊断工具实现长期稳定性治理。具体包括CPU、内存、I/O等监控指标设置,慢Query优化,错Query治理,SQL诊断报告生成,表Meta问题修复及表索引诊断报告的应用,全面覆盖实例监控、问题定位、性能优化和成本控制等方面。
|
12月前
|
监控 Cloud Native 调度
《云原生架构从崩溃失控到稳定自愈的实践方案》
本文以某大型电商供应链系统“618”大促期间的“服务雪崩”故障为切入点,剖析了云原生架构在极端流量下的稳定性短板。故障根源在于库存调度服务接口设计缺陷导致数据库连接池耗尽,且服务间缺乏熔断隔离机制,引发全链路瘫痪。技术团队通过重构核心接口、引入“熔断-隔离-降级”防护体系、搭建三位一体监控闭环、设计全流程流量管控方案,并开展常态化故障注入演练,实现架构从“事后救火”到“事前防御”的转变。改造后系统故障恢复时间大幅缩短,核心业务零中断,同时沉淀出云原生架构抗风险建设的实战方法论。
396 5
|
SQL
数仓规范之sql编写规范
编写SQL时,应遵循以下规范:所有关键字小写,表别名按a, b, c...顺序使用,复杂逻辑多行书写,提高可读性。SELECT字段需逐行列出,避免使用*,GROUP BY字段同样处理。WHERE条件多于一个时,每条件一行。JOIN子表推荐使用嵌套查询方式1,明确关联条件,避免笛卡尔积。关键逻辑需注释,INSERT SELECT后最外层字段加注释说明用途。示例中展示了推荐的JOIN替代子查询的写法,以提高代码的可读性和维护性。
861 1
|
前端开发
Request method ‘POST‘ not supported。 Failed to load resource: net::ERR_FAILED
这篇文章讲述了在前后端分离的项目中,由于前端错误地使用了GET请求方法而不是支持的POST,导致请求被后端拒绝的问题,并提供了相应的解决方法和HTTP方法的CRUD映射知识。
Request method ‘POST‘ not supported。 Failed to load resource: net::ERR_FAILED