原文地址:http://blog.csdn.net/w_intercool/article/details/7893344
使用mybatis查寻数据,跟踪其执行流程
最开始执行的语句
<div >
<div >
<div >
[java] <a title="view plain" href="http://blog.csdn.net/w_intercool/article/details/7893344">view plain<a title="copy" href="http://blog.csdn.net/w_intercool/article/details/7893344">copy<a title="print" href="http://blog.csdn.net/w_intercool/article/details/7893344">print<a title="?" href="http://blog.csdn.net/w_intercool/article/details/7893344">?
这里需要找到sqlsession是从哪里来的
getsqlSession是sqlSessionDaoSupport类里面的方法,该类通过spring的自动注入可以把sqlSessionTemplate注入进来,当然这里的sqlSessionTemplate是需要spring配置的
<div >
<div >
<div >
[java] <a title="view plain" href="http://blog.csdn.net/w_intercool/article/details/7893344">view plain<a title="copy" href="http://blog.csdn.net/w_intercool/article/details/7893344">copy<a title="print" href="http://blog.csdn.net/w_intercool/article/details/7893344">print<a title="?" href="http://blog.csdn.net/w_intercool/article/details/7893344">?
<div >
<div >
<div >
[HTML] <a title="view plain" href="http://blog.csdn.net/w_intercool/article/details/7893344">view plain<a title="copy" href="http://blog.csdn.net/w_intercool/article/details/7893344">copy<a title="print" href="http://blog.csdn.net/w_intercool/article/details/7893344">print<a title="?" href="http://blog.csdn.net/w_intercool/article/details/7893344">?
@autowired(required = false)是通过类型匹配来注入的,如果没有找到相应对,就不用注入
所以selectList方法为sqlSessionTemlate里面的,再看sqlSessionTemplage,里面的都是通过sqlSessionProxy来执行selectList方法的,也就是通过代理方式来的
<div >
<div >
<div >
[java] <a title="view plain" href="http://blog.csdn.net/w_intercool/article/details/7893344">view plain<a title="copy" href="http://blog.csdn.net/w_intercool/article/details/7893344">copy<a title="print" href="http://blog.csdn.net/w_intercool/article/details/7893344">print<a title="?" href="http://blog.csdn.net/w_intercool/article/details/7893344">?
这里用到了java的动态代理,详细可以见java API,有详细的说明
sqlSessionInterceptor实现了InvocationHandler,在invoke方法里面的开始有这样代码,那里是真正的sqlsession
<div >
<div >
<div >
[java] <a title="view plain" href="http://blog.csdn.net/w_intercool/article/details/7893344">view plain<a title="copy" href="http://blog.csdn.net/w_intercool/article/details/7893344">copy<a title="print" href="http://blog.csdn.net/w_intercool/article/details/7893344">print<a title="?" href="http://blog.csdn.net/w_intercool/article/details/7893344">?
跟踪getesqlSession可以找到他的创建来源,见
<div >
<div >
<div >
[java] <a title="view plain" href="http://blog.csdn.net/w_intercool/article/details/7893344">view plain<a title="copy" href="http://blog.csdn.net/w_intercool/article/details/7893344">copy<a title="print" href="http://blog.csdn.net/w_intercool/article/details/7893344">print<a title="?" href="http://blog.csdn.net/w_intercool/article/details/7893344">?
继续跟踪可以找到DefaultsqlSessionFactory里面的该方法
<div >
<div >
<div >
[java] <a title="view plain" href="http://blog.csdn.net/w_intercool/article/details/7893344">view plain<a title="copy" href="http://blog.csdn.net/w_intercool/article/details/7893344">copy<a title="print" href="http://blog.csdn.net/w_intercool/article/details/7893344">print<a title="?" href="http://blog.csdn.net/w_intercool/article/details/7893344">?
通过
[java]你就知道executor是怎么回来的了
mybatis默认使用了cache,在创建exector时,外面就包了一层CacheExecutor,详细见
<div >
<div >
<div >
[java] <a title="view plain" href="http://blog.csdn.net/w_intercool/article/details/7893344">view plain<a title="copy" href="http://blog.csdn.net/w_intercool/article/details/7893344">copy<a title="print" href="http://blog.csdn.net/w_intercool/article/details/7893344">print<a title="?" href="http://blog.csdn.net/w_intercool/article/details/7893344">?
CachingExecutor可以使mybatis先从缓存中提取数据,数据缓存中没有数据时才从数据库里面提取数据。
总结以上是内存溢出为你收集整理的关于mybatis里面的Executor--转载全部内容,希望文章能够帮你解决关于mybatis里面的Executor--转载所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)