开发者学堂课程【高校精品课-厦门大学 -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来完成的。
第三步,他自己写了一个私有的方法,这个私有方法是用来产生这个 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的结构,通过这个方式,大家可以理解面向对象的设计到极致是什么样子。