执行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的结构,通过这个方式,大家可以理解面向对象的设计到极致是什么样子

相关文章
|
JSON 搜索推荐 程序员
『GitHub项目圈选15』推荐5款本周 深受程序员喜爱 的开源项目
『GitHub项目圈选15』推荐5款本周 深受程序员喜爱 的开源项目
505 1
|
移动开发 安全 Java
Java Applet基础详解
Java Applet基础详解
745 0
|
存储 Java Maven
从零到微服务专家:用Micronaut框架轻松构建未来架构
【9月更文挑战第5天】在现代软件开发中,微服务架构因提升应用的可伸缩性和灵活性而广受欢迎。Micronaut 是一个轻量级的 Java 框架,适合构建微服务。本文介绍如何从零开始使用 Micronaut 搭建微服务架构,包括设置开发环境、创建 Maven 项目并添加 Micronaut 依赖,编写主类启动应用,以及添加控制器处理 HTTP 请求。通过示例代码展示如何实现简单的 “Hello, World!” 功能,并介绍如何通过添加更多依赖来扩展应用功能,如数据访问、验证和安全性等。Micronaut 的强大和灵活性使你能够快速构建复杂的微服务系统。
730 5
|
XML JSON 监控
API 开发完全指南
本指南将详尽探讨API开发的基本要素,包括涉及的概念、类型和协议,以及可用的最佳实践和工具。我们将从揭示API在现代软件开发中的作用开始,阐明它们如何促进不同软件组件之间的无缝通信。之后,我们将深入研究各种API类型,如RESTful、GraphQL和SOAP,并分析它们独特的特点和理想用例。 接下来将讨论API设计的关键方面,重点关注API安全性、可扩展性和可维护性。我们将讨论常见的身份验证和授权机制、速率限制以及API版本控制等其他基本主题。最后,我们将介绍领先的API开发工具和框架以及文档和测试的价值,确保你具备开发高质量、高效且安全API所需的知识和资源。
2567 0
|
机器学习/深度学习 自然语言处理 并行计算
探索深度学习与自然语言处理的最新进展
探索深度学习与自然语言处理的最新进展
473 4
|
JavaScript 前端开发
vue全局公共组件自动引入并注册,开发效率直接起飞!
【10月更文挑战第14天】vue全局公共组件自动引入并注册,开发效率直接起飞!
470 1
|
存储 JavaScript 前端开发
[JS] ES Modules的运作原理
【9月更文挑战第16天】ES Modules(ECMAScript Modules)是 JavaScript 中的一种模块化开发规范,适用于浏览器和 Node.js 环境。它通过 `export` 和 `import` 关键字实现模块的导出与导入。模块定义清晰,便于维护和测试。JavaScript 引擎会在执行前进行静态分析,确保模块按需加载,并处理循环依赖。ES Modules 支持静态类型检查,现代浏览器已原生支持,还提供动态导入功能,增强了代码的灵活性和性能。这一规范显著提升了代码的组织和管理效率。
294 1
|
Java
Exception in thread "main" java.lang.UnsatisfiedLinkError: xxx()V
Exception in thread "main" java.lang.UnsatisfiedLinkError: xxx()V
284 0
|
消息中间件 NoSQL 安全
Redis突然报错 NOAUTH Authentication required
2016年年底有个项目需要用到redis,当时比较忙没有在新机器安装redis,就把我博客那台服务器上的redis地址给了技术的同事。第二天开发的同事告诉我redis连不上了,提示NOAUTH Authentication required,看了redis配置文件并没有设置密码,而且前一天使用的时候正常,我这台服务器也不会有人动。当时并没有深入分析,重启了redis后可以正常使用了。
1222 0
Redis突然报错 NOAUTH Authentication required
|
前端开发 JavaScript UED
动态伸缩搜索框:HTML, CSS, JavaScript的完美结合
动态伸缩搜索框:HTML, CSS, JavaScript的完美结合
2654 1