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 的处理多 ...
随机推荐
- Day3-函数及作用域
一.函数定义:一组代码片段用函数名封装起来,通过函数名的方式调用执行. 特性: 1.减少重复代码 2.使程序易扩展 3.使程序易维护 语法定义: def sayhi(): print("he ...
- Kotlin入门第三课:数据类型
前文链接: Kotlin学习第一课:从对比Java开始 Kotlin入门第二课:集合操作 初次尝试用Kotlin实现Android项目 Kotlin的数据类型与Java类似,因此这篇文章主要看Kotl ...
- 【知识整理】惊现RecyclerView内部Bug???别急,我们慢慢解决它~
一.写在前面 这也是久违的一整个月没有写Blog,也是由于近期给妹纸找工作,各种坑蒙拐骗,然而都没卵用.额,广大朋友们,成都需要软件测试.线上运维.产品助理的伙伴,赶紧私聊我了.这妹纸,学习能力挺好, ...
- 543. Diameter of Binary Tree
https://leetcode.com/problems/diameter-of-binary-tree/#/description Given a binary tree, you need to ...
- 【转】Delphi多线程编程
文章来源: http://liukun966123.my.gsdn.net/2004/10/22/4797/ Delphi中有一个线程类TThread是用来实现多线程编程的,这个绝大多数Delphi书 ...
- 【MyBatis源码分析】select源码分析及小结
示例代码 之前的文章说过,对于MyBatis来说insert.update.delete是一组的,因为对于MyBatis来说它们都是update:select是一组的,因为对于MyBatis来说它就是 ...
- HTML/XML/XPATH基础
Html超文本标记语言 网页上单击右键→查看源文件/查看源代码 Html基本结构 <html> 为文档根元素,所有元素都在内部进行 <head> ...
- 在windows下使用Qt5开发GTK3图形界面应用程序
首先,去MSYS2官网下载MSYS2环境并安装在C:/mysys64下,我安装的是64位的. 进入MSYS命令行执行: pacman -S mingw-w64-x86_64-gtk3 pacman - ...
- spring非controller类获取service方法
ApplicationContext ctx = new ClassPathXmlApplicationContext("spring.xml"); pushMessageServ ...
- 使用可视化图表对 Webpack 2 的编译与打包进行统计分析
此文主要对使用可视化图表对 Webpack 2 的编译与打包进行统计分析进行了详细地讲解,供您更加直观地参考. 在之前更新的共十七章节中,我们陆续讲解了 Webpack 2 从配置到打包.压缩优化到调 ...

