zoukankan      html  css  js  c++  java
  • MyBatis源码解析【2】构建项目

    有了之前的准备,今天就要开始构建学习使用的项目了。废话不多说。开始吧。

    首先我用IDEA构建了一个空的maven项目,然后加入了Mybatis的依赖。

    <dependencies>
    <dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.4.4</version>
    </dependency>
    </dependencies>

    需要说明的是这个3.4.4的包虽然是官方提供的,但是一些国内的镜像仓库可能没有,需要多找找。然后需要进行设置才能自动的加载依赖和源码,在IDEA中设置如下

    image

    这些设置完成之后,需要用的东西基本都已经有了。

     
     

    MyBatis的基本构成

    以前,我们都是直接去使用MyBatis,直接拿它配置一下,然后连接一下数据库,然后查个数据,回来就好了。

    但是这次我们需要深入的去了解,在构建项目时就要顺便理解它的基本构成,为以后的分析打下基础。

    核心组件:

    1、SqlSessionFactoryBuilder   按照字面来翻译就是,结构化查询语言会话工厂建造者。

    顾名思义它是一个工厂的建造者,这个工厂的名字呢就是sql会话,主要的功能当然是建造工厂啦。

    2、SqlSessionFactory  这就是那个工厂咯

    那么工厂的主要功能自然是产生产品,那么这个工厂生产的就是名叫:SqlSession的产品。

    3、SqlSession  这个就是那个产品

    这个产品就是我们操作的关键了,我们一般呢,就只能告诉工厂干什么,怎么干,最后我们操作的呢就是这个产品了。

    他的功能是:执行SQL语句并返回相应的结果。

    4、SqlMapper  一个MyBatis的一个新产品,可以由上面那个SqlSession获取。以XML文件的形式存在。

    以上就是MyBatis的基本构成,核心组件,以及这些组件之间的关系,后面我们会用到。

    构建最原始的MyBatis

    下面将构建一个最原始的,至带有一个查询的,整一个过程的Demo(之前用在项目里面全都是带有Spring的项目,所以根本就没有见过最原始的MyBatis的看下去)

    我根据官网的入门来一步步配置

    1、先是使用xml构建我们的工厂

    2、构建我们的mapper

    3、构建我们的产品,也就是会话sqlsession

    4、使用我们的会话去查询

    下面只是随便截一下图,具体步骤都是按照官网来走的。

    image

    image

    image

    image

    image

    image

    需要注意的是,因为需要连接mysql,所以需要导入连接mysql的依赖

    <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.18</version>
    </dependency>
    到此为止一个最基本的最简单的Demo已经完成了。

     
     

    总结

    经过最基本的构建,我已经基本明确了这几个核心组件究竟是干什么用的了。

    相信你也对这几个组件已经不陌生了,那么接下来我们将慢慢分析这个那么简单的例子中,究竟藏了多少秘密。

    这里提出几个问题需要仔细思考。后面研究时需要用到。

    1、工厂是干嘛的?

    2、工厂建立一个够不够?在多线程下需要创建多个吗?

    3、工厂是否每次执行一次sql就需要生产一个产品?

    4、为什么要使用工厂这样的设计?

    5、为什么mapper的只有一个接口,没有实现也可以用。

    6、最后返回的结果和实体间的映射是如何完成的?

    这些问题都会在后面的研究中一一进行解释

  • 相关阅读:
    POJ 1611 The Suspects(并查集)
    POJ 2485 Highways(最小生成树Prim算法)
    POJ 1062 昂贵的聘礼(最短路径Dijkstr的变形)
    SDUT 2374 || HDU 1803Cylinder(计算几何求体积)
    HDU 1804 || SDUT 2375 Deli Deli(简单题)
    POJ 3041 Asteroids(二分图的最大匹配)
    HDU 1802 || SDUT 2373 Black and white painting(规律)
    POJ 1035 Spell checker(字符串简单匹配)
    POJ 3080 Blue Jeans(KMP模式匹配)
    js中反斜杠\的一些研究
  • 原文地址:https://www.cnblogs.com/linkstar/p/7107413.html
Copyright © 2011-2022 走看看