Java EE(Spring+Spring MVC+MyBatis)从入门到精通企业级应用开发教程——1初识MyBatis框架

1、MyBatis工作原理

MyBatis操作数据库流程分为8个步骤,具体介绍如下:

(1)MyBatis读取核心配置文件mybatis-config.xml

mybatis-config.xml核心配置文件主要配置了MyBatis的运行环境等信息。

(2)加载映射文件Mapper.xml

Mapper.xml文件即SQL映射文件,该文件配置操作数据库的SQL语句,需要在mybatis-config.xml中加载才能执行。mybatis-config.xml可以加载多个映射文件,每个映射文件对应数据库中的一张表。

(3)构造会话工厂

通过MyBatis的环境等配置信息构建会话工厂SqlSessionFactory,用于创建SqlSession。

(4)创建会话对象

由会话工厂SqlSessionFactory创建SqlSession对象,该对象中包含了执行SQL语句的所有方法。

(5)创建执行器

会话对象本身不能直接操作数据库,MyBatis底层定义了一个Executor接口用于操作数据库,执行器会根据SqlSession传递的参数动态的生成需要执行的SQL语句,同时负责查询缓存地维护。

(6)封装SQL信息

  SqlSession内部通过执行器Executor操作数据库,执行器将待处理的SQL信息封装到MappedStatement对象中,MappedStatement对象中存储了要映射的SQL语句的id、参数等。Mapper.xml文件中一个SQL语句对应一个MappedStatement对象,SQL语句的id即是MappedStatement的id。Executor执行器会在执行SQL语句之前,通过MappedStatement对象将输入的参数映射到SQL语句中。

(7)操作数据库

根据动态生成的SQL操作数据库。

(8)输出结果映射

执行SQL语句之后,通过MappedStatement对象将输出结果映射至Java对象中

 

2、初识框架

2.1框架概述

  软件框架是一种通用的、可复用的软件环境,它提供特定的功能,助力软件应用、产品和解决方案的开发工作。软件框架包含支撑程序、编译器、代码、库、工具集和API,它把这些部件汇集在一起,以支持项目或系统的开发。(“框架”Framework一词最早出现在建筑领域,是指建造房屋前期所构建的建筑骨架。)

2.2框架优势(相比于JSP+Servlet技术进行软件开发,使用框架有以下优势)

(1)提升开发效率

(2)提高代码规范性和可维护性

(3)提高软件性能

2.3当前主流框架

Spring框架、Spring MVC框架、MyBatis框架、Spring Boot框架、Spring Cloud框架

(1,Spring框架

Spring框架是一个开源框架,是为了解决企业应用程序开发复杂这一难题而创建的,其主要优势之一就是分层架构。同时,Spring之所以与Struts、Hibernate等单层框架不同,是因为Spring致力于提供一个以统一的、高效的方式构造整个应用,并且可以将单层框架组合在一起建立一个连贯的体系。Spring提供了更完美的开发环境,可以为POJO(Plain Ordinary Java Object,普通Java对象)提供企业级的服务。

(2,Spring MVC框架

Spring MVC是Spring提供的一个基于MVC设计模式的Web开发框架,是Spring家族中应用于Web应用的一个模块,可以将它理解为Servlet。在MVC模式中,Spring MVC作为控制器(Controller)用于实现模型与视图的数据交互,是结构非常清晰的JSP Model2实现,即典型的MVC框架。

Spring MVC框架采用松耦合、可插拔的组合结构,具有出色的可配置性,与其他的MVC框架相比,Spring MVC具有更强的扩展性和灵活性。此外,Spring MVC本身就是Spring家族的一部分,可以与Spring框架无缝集成,因此,Spring MVC在互联网开发中应用得越来越广泛。

(3,MyBatis框架

MyBatis原本是Apache的一个开源项目iBatis,2010年这个项目由Apache Software Foundation迁移到了Google Code,并改名为MyBatis,2013年11月MyBatis又被迁移到GitHub。MyBatis是一个优秀的持久层框架,它可以在实体类和SQL语句之间建立映射关系,是一种半自动化的ORM(Object Relational Mapping,对象关系映射)实现。MyBatis封装性要低于Hibernate,但它性能优越、简单易学,在互联网应用的开发中被广泛使用。

(4,Spring Boot框架

Spring Boot框架是Pivotal团队基于Spring开发的全新框架,其设计初衷是为了简化Spring的配置,使用户能够构建独立运行的程序,提高开发效率。Spring Boot框架本身并不提供Spring框架的核心特性及扩展功能,它只是用于快速、敏捷地开发新一代基于Spring框架的应用,同时它还集成了大量的第三方类库(如Jackson、JDBC、Redis等),使用户只需少量配置就能完成相应功能。

(5,Spring Cloud框架

Spring Cloud是一系列

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/904994.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【许可证】Open Source Licenses

长期更新 扩展:shield.io装饰 开源许可证(Open Source Licenses)有很多种,每种都有不同的授权和限制,适用于不同目的。 默认的ISC🟰MIT License是否可商用是否要求开源衍生项目是否必须署名是否有专利授权…

ZooKeeper工作机制与应用场景

目录 1.1、概述1.2、选举机制1.2.1、选举触发条件1.2.2、选举规则1.2.3、选举过程详解 1.3、数据同步机制1.3.1、正常同步1.3.2、宕机同步 1.4、客户端常用命令1.5、应用场景1.5.1、配置管理1.5.2、命令服务1.5.3、分布式锁服务1.5.4、集群管理1.5.5、分布式ID1.5.6、分布式协调…

前端面经-VUE3篇(四)--pinia篇-基本使用、store、state、getter、action、插件

一、基本使用 1、什么是 Pinia? Pinia 是 Vue.js 的官方状态管理库,是 Vuex 的“升级版”。它专为 Vue 3 和 Composition API 设计,用于管理多个组件之间共享的数据(也叫“全局状态”)。 2、为什么需要状态管理库&a…

数据结构之图的遍历

图的遍历 图的遍历目的是访问图的每一个顶点恰好一次,,同时访问图中每条边恰好一 次。 对于无向图,常见的遍历方式有深度优先遍历(Depth-First Search, DFS) 和广度优先遍历(Breadth-First Search, BFS)。…

Ubuntu 第11章 网络管理_常用的网络配置命令

为了管理网络,Linux提供了许多非常有用的网络管理命令。利用这些命令,一方面可以有效地管理网络,另一方面出现网络故障时,可以快速进行诊断。本节将对Ubuntu提供的网络管理命令进行介绍。 11.2.1 ifconfig命令 关于ifconfig命令&…

Qt解决自定义窗口样式不生效问题

方法一: this->setAttribute(Qt::WA_StyledBackground, true); 方法二: 将类继承QWidget 改成继承 QFrame class MyWidget : public QFrame {} 方法三:重新实现QWidget的paintEvent函数时,使用QStylePainter绘制。 void p…

HNUST湖南科技大学-软件测试期中复习考点(保命版)

使用说明:本复习考点仅用于及格保命。软件测试和其他专业课不太一样,记忆的太多了,只能说考试的时候,想到啥就写啥,多写一点!多写一点!多写一点!(重要事情说三遍&#xf…

ES6 知识点整理

一、变量声明:var、let、const 的区别 作用域 var:函数作用域(函数内有效)。let/const:块级作用域({} 内有效,如 if、for)。 变量提升 var 会提升变量到作用域顶部(值为…

分布式爬虫去重:Python + Redis实现高效URL去重

1. 引言 在互联网数据采集(爬虫)过程中,URL去重是一个关键问题。如果不对URL进行去重,爬虫可能会重复抓取相同页面,导致资源浪费、数据冗余,甚至触发目标网站的反爬机制。 对于单机爬虫,可以使…

C# WPF 颜色拾取器

x:Name=Color Picker 语言:C# WPF 下载:https://download.csdn.net/download/polloo2012/90780640 主界面 颜色库 关于我们 颜色拾取器是一种能够帮助用户获取颜色信息,并进行颜色选择、识别和调整的工具,以下将从其常见类型、使用场景及部分软件工具这几个维度展开介绍…

Git 使用的全流程以及SourceTree工具的使用操作和忽略文件的配置

1. 安装 Git 要使用 Git,首先得在你的系统上安装它。你可以按照不同操作系统的安装指南来操作: Windows:访问 Git 官方下载页面,下载安装程序并运行。 macOS:可以使用 Homebrew 来安装,命令为 brew inst…

《深入理解Linux网络》笔记

《深入理解Linux网络》笔记 前言参考 前言 前段时间看了《深入理解Linux网络》这本书,虽然有些地方有以代码充篇幅的嫌疑,但总体来说还是值得一看的。在这里简单记录一下笔记,记录下对网络新的理解。 内核是如果接受网络包的? 如…

数仓-可累计,半累加,不可累加指标,是什么,举例说明及解决方案

目录 1. 可累计指标定义:举例:解决方案: 2. 半累加指标定义:举例:解决方案: 3. 不可累加指标定义:举例:解决方案: 4. 总结对比5. 实际场景中的注意事项 这是数据仓库设计…

NestJS 的核心构建块有哪些?请简要描述它们的作用(例如,Modules, Controllers, Providers)

NestJS 核心构建块解析(Modules、Controllers、Providers) NestJS 是一个基于 TypeScript 的渐进式 Node.js 框架,核心设计借鉴了 Angular 的模块化思想。下面从实际开发角度解析它的三大核心构建块,并附代码示例和避坑指南。 一…

vue2 上传pdf,拖拽盖章,下载图片

效果图片&#xff1a; 不多废话上代码&#xff1a; <template><div class"pdf-stamp" onbeforecopyreturn false onselectdocument.selection.empty() ondragstartreturn false onselectstart return false ><div class"scroll-box" scro…

理性地倾听与表达:检索算法的语言学改进

论文标题 Rational Retrieval Acts: Leveraging Pragmatic Reasoning to Improve Sparse Retrieval 论文地址 https://arxiv.org/pdf/2505.03676 代码地址 https://github.com/arthur-75/Rational-Retrieval-Acts 作者背景 巴黎萨克雷大学&#xff0c;索邦大学&#xff…

MySQL及线程关于锁的面试题

目录 1.了解过 MySQL 死锁问题吗&#xff1f; 2.什么是线程死锁&#xff1f;死锁相关面试题 2.1 什么是死锁&#xff1a; 2.2 形成死锁的四个必要条件是什么&#xff1f; 2.3 如何避免线程死锁&#xff1f; 3. MySQL 怎么排查死锁问题&#xff1f; 4.Java线上死锁问题如…

【Reality Capture 】Reality Capture1.5中文版安装教程(附安装包下载)

文章目录 一、Reality Capture1.5中文版安装教程二、拷贝中文补丁三、Reality Capture1.5中文版下载地址一、Reality Capture1.5中文版安装教程 1. Reality Capture v1.4.0汉化版安装包下载并解压 2. 运行EpicInstaller-15.17.1-4a91a118786f4c2aa3c0093b23f83863.msi 3. 更改…

SVG数据可视化设计(AI)完全工作流解读|计育韬

AI 的 SVG 创作极限在哪里&#xff1f;绝不是那些初级的流程图生成和粗糙的商业模型设计。以下是由我们 JZ Creative Studio 通过 Claude 和 Deepseek 开展的专业级 SVG Data Visualization 创作&#xff0c;应广大读者强烈要求&#xff0c;专程直播讲授了一期 AI 工作流分享。…

not a genuine st device abort connection的问题

1.魔法棒里面电机Settings 2.然后在Other里面把Enabled的钩子去掉