eclipse导入mybatis源码,并结合spring可以调试(图解很详细)

一、用自己原来引入过mybatis的项目,主要下载这2个源码

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

二、下载之后两个都解压,导入eclipse(注意用maven方式导入)
  • 导入后这2个项目要maven刷新下依赖,目录结构就会变成maven了。
    在这里插入图片描述
  • 目录结构变成了maven
    在这里插入图片描述
  • 此时点击我项目的2个依赖会进入我本地源码的pom.xml,基本上就成功一半了。
    在这里插入图片描述
三、此时要注意的就是添加依赖
  • 这2个依赖要有
    在这里插入图片描述
  • 还有pom.xml必须要有ognl和javassist ,这里版本看你们自己选用了;缺少javassist 会报 Cannot enable lazy loading because Javassist is not available. Add Javassist to your classpath;缺少ognl会报找不到class
  		<!-- mybatis需要的 -->
      <dependency>
            <groupId>ognl</groupId>
            <artifactId>ognl</artifactId>
            <version>${ognl.version}</version>
        </dependency>
   		<!-- Cannot enable lazy loading because Javassist is not available. Add Javassist to your classpath. -->
        <dependency>
            <groupId>org.javassist</groupId>
            <artifactId>javassist</artifactId>
            <version>${javassist.version}</version>
        </dependency>
  • 有时Deployment Assembly不会自动添加依赖需要我们自己Add:
    在这里插入图片描述
    后面的spring那些包,因为我是导入的源码才有;不是导入spring源码运行的不用管。

  • 有时候maven刷新后,会变成低版本一些语法糖要报错,还需要改下编译的jdk版本:
    在这里插入图片描述
    还可以在pom.xml设置编译jdk版本,就不会出现这种问题了。

  <build>
        <plugins>
             <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>${maven-compiler-plugin.version}</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>       
                </configuration>
            </plugin>  
</plugins>
</build>
四、最后一步就是检测是否生效,看一下是否走我们的源码了。查看下我们的配置文件找入口,然后我们debug一下就可以验证了。
  • 这里有2个入口可以debug,SqlSessionFactoryBean是根据配置文件构建SqlSessionFactory的;MapperScannerConfigurer是扫描Mapper接口注入到spring容器的。
  • MapperScannerConfigurer是实现BeanDefinitionRegistryPostProcessor接口所以这个初始化比SqlSessionFactoryBean要早一些。SqlSessionFactoryBean是在被初始化的时候调用afterPropertiesSet方法区构建SqlSessionFactory的。
    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 启动完成后做一下简单查询debug一下也是可以的。
  • 查询单条数据调用mapper的时候一路会经过一个jdk动态代理判断执行的动作(增、删、改、查),然后给封装的SqlSessionTemplate,最后还是到DefaultSqlSession的selectOne方法。
    在这里插入图片描述
    在这里插入图片描述
  • 至此已经完成了,导入源码还是比较好debug一些,看源码效率相对高一些。如果本文章有误,请批评指正,感谢您的观看!

posted on 2019-07-26 17:48  愤怒的苹果ext  阅读(93)  评论(0编辑  收藏  举报

导航