1.1 ORM简介

传统JDBC编程主要步骤:
1.注册数据库驱动类,明确指定数据库URL、用户名、密码等连接信息;
2.通过DriverManager打开数据库连接;
3.通过数据库连接创建Statement对象(预执行语句对象);
4.通过Statement对象执行SQL,得到ResultSet结果对象;
5.通过ResultSet读取数据,并将数据转换为JavaBean对象;
6.关闭ResultSet、Statement对象以及数据库连接,释放相关资源;
ORM框架就是根据映射配置文件,完成数据在对象模型与关系模型之间的映射,同事屏蔽上述的重复代码。

1.2 常见持久化框架

Hibernate、JPA、、Spring JDBC、Mybatis

1.3 Mybatis 示例

MyBatis配置文件:

映射配置文件:

应用程序首先,会加载mybatis-config.xml配置文件,并根据配置文件内容创建SqlSessionFactory对象;然后,通过SqlSessionFactory对象创建SqlSession对象,SqlSession接口中定义了执行SQL语句的各种方法;之后,通过SqlSession对象执行映射配置文件中定义的SQL语句,完成相应的数据操作;最后,通过SqlSession对象提交事务,关闭SqlSession对象。

1.4 Mybatis 整体架构

MyBatis整体架构分为三层:基础支持层,核心处理层,接口层。

1.4.1 基础支持层

  • 反射模块

对Java原生的反射进行封装,提供简易的API。

  • 类型转换模块

实现别名的转换;实现JDBC类型与Java类型之间的转换;

  • 日志模块

集成第三方日志框架

  • 资源加载模块

对类加载器进行封装,确定类加载器的使用顺序,提供加载类文件以及其他资源文件的功能

  • 解析器模块

对XPath进行封装,为MyBatis初始化时解析MyBatis配置文件和映射配置文件提供支持;

处理动态Sql语句中的占位符提供支持;

  • 数据源模块

提供MyBatis自身数据库实现;提供对第三方数据源的集成的接口;

  • 事务管理

对数据库事务进行抽象。与Spring框架集成,由Spring进行事务管理。

  • 缓存模块

MyBaits提供一级缓存、二级缓存,这个两级缓存都依赖于基础支持层的缓存模块。

  • Binding模块

MyBatis通过绑定模块将用户自定义的Mapper接口与映射配置文件进行关联,系统可以通过调用自定义Mapper接口中的方法执行相应的Sql语句完成数据库操作。开发人员无需编写自定义Mapper接口的实现,MyBatis会自动为其创建动态代理对象。

1.4.2 核心处理层

核心处理层实现了Mybatis的核心处理流程,包括MyBatis的初始化,完成一次数据库操作的涉及的全部流程。

  • 配置解析

MyBatis在初始化过程中,会加载MyBatis配置文件、映射配置文件以及Mapper接口中的注解信息,解析后的配置信息会形成相应的对象,存储在Configuration对象中。

  • SQL解析与scription脚本

动态sql解析

  • SQL执行

SQL执行涉及 Executor、StatementHandler、ParameterHandler、ResultSetHandler等多个组件。

Executor主要维护一级缓存、二级缓存提供事务管理的相关操作,他会将数据库相关操作委托给StatementHandler完成。

StatementHandler首先通过ParameterHandler完成SQL语句的实参绑定,然后通过java.sql.Statement对象执行SQL语句并得到结果,最后通过ResultSetHandler完成结果集映射,得到结果对象并返回。

  • 插件

1.4.3 接口层

定义了MyBatis暴露的API。

mybatis 依赖于jdbc_第1章 MyBatis快速入门相关推荐

  1. mybatis 依赖于jdbc_优于jdbc的mybatis框架入门

    1.什么是mybatis? MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架. MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索. MyB ...

  2. 第 1 章 MybatisPlus 快速入门

    第 1 章 MybatisPlus 快速入门 1.MybatisPlus 概述 MybatisPlus:一款 Mybatis 的增强工具包 MybatisPlus 官网:https://mybatis ...

  3. Gradle2.0用户指南翻译——第七章. Java 快速入门

    翻译项目请关注Github上的地址: https://github.com/msdx/gradledoc 本文翻译所在分支: https://github.com/msdx/gradledoc/tre ...

  4. 大数据技术之 Kafka (第 2 章 Kafka快速入门)

    第 2 章 Kafka 快速入门 下载安装kafka集群 1.需要jdk 2.需要zookeeper,这个东西在最新版的Kafka中内置. 3.下载Kafka安装包 (下载官网地址:Apache Ka ...

  5. mybatis 依赖于jdbc_大数据基础:Mybatis零基础入门

    在Java企业级开发任务当中,持久层框架的选择,国内市场的主流选择一定有Mybatis的一席之地,从入门来说,Mybatis的学习难度不算高,但是要把Mybatis发挥出真正的效用,还是需要深入学习的 ...

  6. mybatis 依赖于jdbc_使用基础mybatis代替原始jdbc

    mybatis依赖包 在上一篇其实已经说过,使用mybatis并不是就不用jdbc了,实际上不论使用哪个持久层框架,底层都还是要经过jdbc.使用java和数据库打交道(起码关系型数据库),jdbc是 ...

  7. 《嵌入式 Linux应用程序开发标准教程(第2版)》——第1章 Linux快速入门 1.1 嵌入式Linux基础...

    本节书摘来自异步社区<嵌入式 Linux应用程序开发标准教程(第2版)>一书中的第1章,第1.1节,作者 华清远见嵌入式培训中心,更多章节内容可以访问云栖社区"异步社区" ...

  8. 第三章Python快速入门

    前言 本章重点介绍有关Python的基础知识,这是每一个Python用户所要走过的必经之路,因为任何一段Python代码中都会包含一些基础知识.对于读者来说,只有基础夯实牢了,在之后的代码编程中才会轻 ...

  9. 《Python数据分析基础教程:NumPy学习指南(第2版)》笔记1:第一章 NumPy快速入门

    NumPy快速入门 1.1 Python NumPy是基于Python的,因此在安装NumPy之前,需要先安装Python.某些操作系统已经默认安装有Python环境,但仍需检查Python的版本是否 ...

最新文章

  1. shell脚本的执行方式及区别
  2. 解决centos ping不通外网
  3. Use Ghidra To Reverse GenyMotion—Suggestion
  4. 使用@functools.wraps的理由
  5. [js] promise的构造函数是同步执行还是异步执行,它的then方法呢?
  6. Android studio 报错:Manifest merger failed xxx
  7. 从经理的角度看领域设计
  8. python类与对象 封装继承与多态 0308
  9. 测试cpu的简单工具-dhrystone
  10. MySql的架构和历史
  11. [原创]java WEB学习笔记103:Spring学习---Spring Bean配置:基于注解的方式(基于注解配置bean,基于注解来装配bean的属性)...
  12. 最安全的php加密,安全性 - 使用PHP进行最简单的双向加密
  13. 10个最新交互式Web设计实例欣赏
  14. 龙果开源支付系统 架构全新升级
  15. 启动Hadoop集群,出现Cannot set priority of nodemanager(resourcemanager) process xxx问题
  16. linux-mount-iso
  17. elementUI 输入框添加小图标
  18. win 2008R2启用TLS 1.2 Windows 2008/2008R2手动启用TLS1_2协议教程
  19. Linu笔记-管线命令pipe
  20. SIGMOD 2020 CockRoach 论文阅读

热门文章

  1. Java 建模: UML 工作簿:第 2 部分
  2. VMware Linux RAID5 介绍
  3. postgreSQL数据库里面导入数据
  4. Excel 修改 【数据图表】 的 【数据源】 的范围 (VBA)
  5. 关于VBA中【按钮的改名】 和 【函数名字的改变】
  6. 力扣题目——1249. 移除无效的括号
  7. python中gensim内没有summarization的问题
  8. 天云服务器做系统,自己做云服务器系统
  9. 【Hadoop】Hadoop生态圈基本组件介绍
  10. 【SQL】BETWEEN