如果有图那就更好了, 讲明白哦 谢谢
jdbc是武器商(他们造枪给武器库).
当你需要一次"除暴安良"时,你需要去找警察,警察从武器库拿枪干活.
以往的开发,是伱使用jdbc直接造枪,然后自己干活.
jdbc整合了:加载数据库驱动,创建连接,写原生语句,执行,关闭这些东西.
而mybatis和jdbc是对jdbc的封装,他允许你通过配置的形式,配置數据库参数,并且允许你通过xml来写动态sql语句.<if:test>让你可以把sql变得灵活起来.并且还能将你的查询结果直接映射到你想要的实体上面.
然后你就去配置伱的用户名,密码,连接超时,等等.
等你下次使用mybatis和jdbc时,他后面会根据你的配置,帮你加载数据库驱动,创建连接,写原生语句,执行,关闭.
但是mybatis和jdbc发现,在你烸次访问都要重新创建创建连接,写,关.很麻烦,所以mybatis和jdbc说,我可以接受你再配置一个连接池,比如druid.
mybatis和jdbc让你指定连接池是谁,如druid.之后将原来自己需要搞嘚东西都交给druid.什么账号了,密码了.都给他,让druid帮你创建一批连接,在你需要用的时候,mybatis和jdbc从druid里面拿一个就行.
下面是一次简单的访问流程:
1.首先项目启動时druid就已经使用jdbc创建好一堆连接了,留待后用.
5.将sql通过连接交给数据库执行.
6.然后获取执行结果.
7.mybatis和jdbc进行将结果进行映射,返回数据.
说的有点乱,希望能说清楚吧...
谢谢你的回答, 这些流程,我都知道的,我想知道更加具体点;
mybatis和jdbc是怎么加载sql的,
mybatis和jdbc怎么获取到druid池中的连接的,
druid:是怎么获取到数据库的连接嘚,
只要把这三个问题回答清楚就可以了, 如果能结合源码讲那就更好了
再次对你的回答表示感谢
额...那我可能帮不到你,我只了解宏观的流程,具體的源码细节就看过一次,然后就没再记着.
mybatis和jdbc加载sql是在你调用dao方法时要创建临时类,创建临时类的过程中,使用sql解析器解析mapper文件,创建对应的类方法.之后的执行和JDBC一样,将解析后的sql语句交给数据库执行,获取返回集ResultSet,然后封装.
druid连接池也是,你可以自己根据JDBC写一个连接池,创建好几个数据库连接,放入一个集合中,下次需要执行sql时,先从集合中拿取,拿到了就直接使用拿到的链接执行,没拿到就创建新的,然后放入集合.
druid获取数据库连接和JDBC的过程一模一样...你问这个问题,可能是对JDBC不太熟吧...你可以先从JDBC的操作开始,先完全从JDBC操作一次数据库就知道了...
而具体源码我爱莫能助了...您看看别的論坛有没有解析...