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中设置如下
这些设置完成之后,需要用的东西基本都已经有了。
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、使用我们的会话去查询
下面只是随便截一下图,具体步骤都是按照官网来走的。





需要注意的是,因为需要连接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、最后返回的结果和实体间的映射是如何完成的?
这些问题都会在后面的研究中一一进行解释
MyBatis源码解析【2】构建项目的更多相关文章
- 【MyBatis源码解析】MyBatis一二级缓存
MyBatis缓存 我们知道,频繁的数据库操作是非常耗费性能的(主要是因为对于DB而言,数据是持久化在磁盘中的,因此查询操作需要通过IO,IO操作速度相比内存操作速度慢了好几个量级),尤其是对于一些相 ...
- mybatis源码-解析配置文件(三)之配置文件Configuration解析
目录 1. 简介 1.1 系列内容 1.2 适合对象 1.3 本文内容 2. 配置文件 2.1 mysql.properties 2.2 mybatis-config.xml 3. Configura ...
- Mybatis源码解析,一步一步从浅入深(一):创建准备工程
Spring SpringMVC Mybatis(简称ssm)是一个很流行的java web框架,而Mybatis作为ORM 持久层框架,因其灵活简单,深受青睐.而且现在的招聘职位中都要求应试者熟悉M ...
- Mybatis源码解析,一步一步从浅入深(四):将configuration.xml的解析到Configuration对象实例
在Mybatis源码解析,一步一步从浅入深(二):按步骤解析源码中我们看到了XMLConfigBuilder(xml配置解析器)的实例化.而且这个实例化过程在文章:Mybatis源码解析,一步一步从浅 ...
- Mybatis源码解析(一) —— mybatis与Spring是如何整合的?
Mybatis源码解析(一) -- mybatis与Spring是如何整合的? 从大学开始接触mybatis到现在差不多快3年了吧,最近寻思着使用3年了,我却还不清楚其内部实现细节,比如: 它是如 ...
- Mybatis源码解析(三) —— Mapper代理类的生成
Mybatis源码解析(三) -- Mapper代理类的生成 在本系列第一篇文章已经讲述过在Mybatis-Spring项目中,是通过 MapperFactoryBean 的 getObject( ...
- Mybatis源码解析(二) —— 加载 Configuration
Mybatis源码解析(二) -- 加载 Configuration 正如上文所看到的 Configuration 对象保存了所有Mybatis的配置信息,也就是说mybatis-config. ...
- Mybatis源码解析3——核心类SqlSessionFactory,看完我悟了
这是昨晚的武汉,晚上九点钟拍的,疫情又一次来袭,曾经熙熙攘攘的夜市也变得冷冷清清,但比前几周要好很多了.希望大家都能保护好自己,保护好身边的人,生活不可能像你想象的那么好,但也不会像你想象的那么糟. ...
- Mybatis源码解析-DynamicSqlSource和RawSqlSource的区别
XMLLanguageDriver是ibatis的默认解析sql节点帮助类,其中的方法其会调用生成DynamicSqlSource和RawSqlSource这两个帮助类,本文将对此作下简单的简析 应用 ...
- mybatis源码-解析配置文件(四-1)之配置文件Mapper解析(cache)
目录 1. 简介 2. 解析 3 StrictMap 3.1 区别HashMap:键必须为String 3.2 区别HashMap:多了成员变量 name 3.3 区别HashMap:key 的处理多 ...
随机推荐
- 第 7 章 MySQL 数据库锁定机制
前言: 为了保证数据的一致完整性,任何一个数据库都存在锁定机制.锁定机制的优劣直接应想到一个数据库系统的并发处理能力和性能,所以锁定机制的实现也就成为了各种数据库的核心技术之一.本章将对 MySQ ...
- 在Eclipse IDE使用Gradle构建应用程序
文 by / 林本托 Tips 做一个终身学习的人. 1. 下载和配置Gradle Gradle Inc.是Gradle框架开发的公司,为Eclipse IDE提供了Gradle工具的支持. 此工具可 ...
- ES6核心内容精讲--快速实践ES6(三)
Promise 是什么 Promise是异步编程的一种解决方案.Promise对象表示了异步操作的最终状态(完成或失败)和返回的结果. 其实我们在jQuery的ajax中已经见识了部分Promise的 ...
- java中文件操作《一》
在日常的开发中我们经常会碰到对文件的操作,在java中对文件的操作都在java.io包下,这个包下的类有File.inputStream.outputStream.FileInputStream.Fi ...
- Java 开发中如何正确踩坑
为什么说一个好的员工能顶 100 个普通员工 我们的做法是,要用最好的人.我一直都认为研发本身是很有创造性的,如果人不放松,或不够聪明,都很难做得好.你要找到最好的人,一个好的工程师不是顶10个,是顶 ...
- python 基础篇 2
三.对变量.对象与赋值的浅析 1.不记住就完蛋了 1.1 记住:一切数据都是对象 1.2 记住:一切变量都是对数据对象的一个引用 1.3 分析:python内部的引用计数 sys.getrefcoun ...
- (转)Nginx的启动、停止与重启
启动 启动代码格式:nginx安装目录地址 -c nginx配置文件地址 例如: [root@LinuxServer sbin]# /usr/local/nginx/sbin/nginx -c /us ...
- Common.Logging源码解析一
Common.Logging是Apache下的一个开源日志接口组件,主要用于切换不同的日志库,因为当前流行的日志库有很多向log4j.log4net(log4j的.net版本)等等,所以为了能灵活的切 ...
- activeMQ的安装
1.下载ActiveMQ 去官方网站下载:http://activemq.apache.org/ 2.运行ActiveMQ 解压缩apache-activemq-5.5.1-bin.zip, 修改配置 ...
- 写个百万级别full-stack小型协程库——原理介绍
其实说什么百万千万级别都是虚的,下面给出实现原理和测试结果,原理很简单,我就不上图了: 原理:为了简单明了,只支持单线程,每个协程共享一个4K的空间(你可以用堆,用匿名内存映射或者直接开个数组也都是可 ...

