美文网首页
浅谈简易自定义mybatis

浅谈简易自定义mybatis

作者: 过处翩若惊鸿 | 来源:发表于2018-11-20 09:54 被阅读0次

            什么是mybatis?MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。简单点说,mybatis就是jdbc的框架。

            要了解mybatis的底层,首先我们要了解mybatis的使用步骤。通过mybatis查询数据,总共有六步,如下:

    (这是五步固定步骤)

        这前五步中,只有两个地方是要我们自定义的,第一是加载配置文件,sqlmapconfig.xml文件是存储jdbc连接信息的,而,usermapper.class的作用我们在后面再概述。

           接下来,我们将通过讲解前面五步来了解mybatis的底层原理。

    第一步。将配置文件转换为流对象,具体实现如下:

    将配置文件转换为流对象

    第二步。创建建造者类。

    第三步。以第一步获取到的流对象为参数,传入到建筑者对象的build方法中,获取工厂对象。

    将流对象传入到build方法中,到底做了些什么呢?

    build方法的实现

    此时我们可以看见,在build方法中new了一个defaultsqlsessionfactory对象,是不是跟工厂类很像呢?对了,工厂类是一个接口,而defaultsqlsessionfactory是工厂类的实现类,而在build方法中又调用了defaultsqlsessionfactory的setIn方法,这里面有实现了什么呢?我们来看一下defaultsqlsessionfactory中setIn方法的实现。

    通过上面代码,我们可以看出,这是将流对象传入到defaultsqlsessionfactory的实例中,此时我们的思路也就中断了。这时我们就要通过接下来的步骤来继续了解了。

    第四步,获取sqlsession对象,调用的是defaultsqlsessionfactory中的opensession方法来获取。接下来,我们就需要看看opensession到底做了何事了。

    opensession的具体实现

    我们可以看到这一行

    这一行又做了什么呢?在看具体实现前,我们先思考一下,将流对象传入,很可能就是要对流对象进行操作了。

    而且传入defaultsession对象,应该是对defaultsession对象的变量进行赋值。

    让我们看下defaultsession对象中有些什么

    这是defaultsession中的成员变量。再让我们回到前面一步。看看到底对这个变量做了些什么

    通过上面代码我们可以发现,通过操作流对象,我们将xml文件中的信息读取到了conf对象中,再将conf对象封装到sqlsession中

    最后一步,也是最重要的一步,前面的内容都是为最后一步做铺垫。

    我们来看一下sqlsession中getmapper方法的具体实现。

    (未完待续。。)

    相关文章

      网友评论

          本文标题:浅谈简易自定义mybatis

          本文链接:https://www.haomeiwen.com/subject/nhqtqqtx.html