mybatis+druid+jdbc 原理介绍

说一下,mybatis+druid+jdbc运行原理,他们之间是怎么运行的,怎么一个过程,说明白,mybatis是怎么加载sql的,mybatis怎么获取到druid池中... 说一下,mybatis + druid + jdbc运行原理,他们之间是怎么运行的, 怎么一个过程,
说明白,mybatis是怎么加载sql的,
mybatis怎么获取到druid池中的连接的,
druid:是怎么获取到数据库的连接的,
如果有图那就更好了, 讲明白哦 谢谢
展开
 我来答
叫我神经冰
2019-09-07 · TA获得超过342个赞
知道小有建树答主
回答量:180
采纳率:76%
帮助的人:50.2万
展开全部
mybatis是警察.
druid是武器库(有很多枪).
jdbc是武器商(他们造枪给武器库).
当你需要一次"除暴安良"时,你需要去找警察,警察从武器库拿枪干活.
以往的开发,是你使用jdbc直接造枪,然后自己干活.
jdbc整合了:加载数据库驱动,创建连接,写原生语句,执行,关闭这些东西.
而mybatis是对jdbc的封装,他允许你通过配置的形式,配置数据库参数,并且允许你通过xml来写动态sql语句.<if:test>让你可以把sql变得灵活起来.并且还能将你的查询结果直接映射到你想要的实体上面.
然后你就去配置你的用户名,密码,连接超时,等等.
等你下次使用mybatis时,他后面会根据你的配置,帮你加载数据库驱动,创建连接,写原生语句,执行,关闭.
但是mybatis发现,在你每次访问都要重新创建创建连接,写,关.很麻烦,所以mybatis说,我可以接受你再配置一个连接池,比如druid.
mybatis让你指定连接池是谁,如druid.之后将原来自己需要搞的东西都交给druid.什么账号了,密码了.都给他,让druid帮你创建一批连接,在你需要用的时候,mybatis从druid里面拿一个就行.
下面是一次简单的访问流程:
controller->service->dao->mapper
1.首先项目启动时druid就已经使用jdbc创建好一堆连接了,留待后用.
2.当请求到mapper时,mybatis框架创建临时类.
3.然后将动态sql进行替换重写,变成原始的native sql.
4.从druid拿到一个连接.
5.将sql通过连接交给数据库执行.
6.然后获取执行结果.
7.mybatis进行将结果进行映射,返回数据.
说的有点乱,希望能说清楚吧...
更多追问追答
追问
谢谢你的回答, 这些流程,我都知道的,我想知道更加具体点;
mybatis是怎么加载sql的,
mybatis怎么获取到druid池中的连接的,
druid:是怎么获取到数据库的连接的,
只要把这三个问题回答清楚就可以了, 如果能结合源码讲那就更好了
再次对你的回答表示感谢
追答
额...那我可能帮不到你,我只了解宏观的流程,具体的源码细节就看过一次,然后就没再记着.
mybatis加载sql是在你调用dao方法时要创建临时类,创建临时类的过程中,使用sql解析器解析mapper文件,创建对应的类方法.之后的执行和JDBC一样,将解析后的sql语句交给数据库执行,获取返回集ResultSet,然后封装.
druid连接池也是,你可以自己根据JDBC写一个连接池,创建好几个数据库连接,放入一个集合中,下次需要执行sql时,先从集合中拿取,拿到了就直接使用拿到的链接执行,没拿到就创建新的,然后放入集合.
druid获取数据库连接和JDBC的过程一模一样...你问这个问题,可能是对JDBC不太熟吧...你可以先从JDBC的操作开始,先完全从JDBC操作一次数据库就知道了...
而具体源码我爱莫能助了...您看看别的论坛有没有解析...
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式