mybatis 依赖于jdbc_第1章 MyBatis快速入门
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快速入门相关推荐
- mybatis 依赖于jdbc_优于jdbc的mybatis框架入门
1.什么是mybatis? MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架. MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索. MyB ...
- 第 1 章 MybatisPlus 快速入门
第 1 章 MybatisPlus 快速入门 1.MybatisPlus 概述 MybatisPlus:一款 Mybatis 的增强工具包 MybatisPlus 官网:https://mybatis ...
- Gradle2.0用户指南翻译——第七章. Java 快速入门
翻译项目请关注Github上的地址: https://github.com/msdx/gradledoc 本文翻译所在分支: https://github.com/msdx/gradledoc/tre ...
- 大数据技术之 Kafka (第 2 章 Kafka快速入门)
第 2 章 Kafka 快速入门 下载安装kafka集群 1.需要jdk 2.需要zookeeper,这个东西在最新版的Kafka中内置. 3.下载Kafka安装包 (下载官网地址:Apache Ka ...
- mybatis 依赖于jdbc_大数据基础:Mybatis零基础入门
在Java企业级开发任务当中,持久层框架的选择,国内市场的主流选择一定有Mybatis的一席之地,从入门来说,Mybatis的学习难度不算高,但是要把Mybatis发挥出真正的效用,还是需要深入学习的 ...
- mybatis 依赖于jdbc_使用基础mybatis代替原始jdbc
mybatis依赖包 在上一篇其实已经说过,使用mybatis并不是就不用jdbc了,实际上不论使用哪个持久层框架,底层都还是要经过jdbc.使用java和数据库打交道(起码关系型数据库),jdbc是 ...
- 《嵌入式 Linux应用程序开发标准教程(第2版)》——第1章 Linux快速入门 1.1 嵌入式Linux基础...
本节书摘来自异步社区<嵌入式 Linux应用程序开发标准教程(第2版)>一书中的第1章,第1.1节,作者 华清远见嵌入式培训中心,更多章节内容可以访问云栖社区"异步社区" ...
- 第三章Python快速入门
前言 本章重点介绍有关Python的基础知识,这是每一个Python用户所要走过的必经之路,因为任何一段Python代码中都会包含一些基础知识.对于读者来说,只有基础夯实牢了,在之后的代码编程中才会轻 ...
- 《Python数据分析基础教程:NumPy学习指南(第2版)》笔记1:第一章 NumPy快速入门
NumPy快速入门 1.1 Python NumPy是基于Python的,因此在安装NumPy之前,需要先安装Python.某些操作系统已经默认安装有Python环境,但仍需检查Python的版本是否 ...
最新文章
- shell脚本的执行方式及区别
- 解决centos ping不通外网
- Use Ghidra To Reverse GenyMotion—Suggestion
- 使用@functools.wraps的理由
- [js] promise的构造函数是同步执行还是异步执行,它的then方法呢?
- Android studio 报错:Manifest merger failed xxx
- 从经理的角度看领域设计
- python类与对象 封装继承与多态 0308
- 测试cpu的简单工具-dhrystone
- MySql的架构和历史
- [原创]java WEB学习笔记103:Spring学习---Spring Bean配置:基于注解的方式(基于注解配置bean,基于注解来装配bean的属性)...
- 最安全的php加密,安全性 - 使用PHP进行最简单的双向加密
- 10个最新交互式Web设计实例欣赏
- 龙果开源支付系统 架构全新升级
- 启动Hadoop集群,出现Cannot set priority of nodemanager(resourcemanager) process xxx问题
- linux-mount-iso
- elementUI 输入框添加小图标
- win 2008R2启用TLS 1.2 Windows 2008/2008R2手动启用TLS1_2协议教程
- Linu笔记-管线命令pipe
- SIGMOD 2020 CockRoach 论文阅读