【MyBatis】mvc模式以及Mapper文件中的namespace以及ORM思想

目录

什么是MVC三层架构,初步了解?

namespace的作用是什么?

Mapper文件中的namespace?

ORM思想(对象关系映射思想)

其中提供了一套映射规则和API


什么是MVC三层架构,初步了解?

三层架构包括,表示层、业务逻辑层、数据层,对应到我的项目中的代码中就是,在web包下书写的是表示层,而表示层是负责调用的,相当于指挥官级别,他只负责调用,逻辑层就是service层,他是负责动手办事的层,例如主要的业务逻辑等等,数据层也就是操作数据的层;

层与层之间一般是使用接口来连接,为了降低耦合度,大概的结构就是你表示层中调用service接口,service中调用dao接口,此外接口一般是父类引用指向子类对象(也就是多态);

又因为我们不可创建的接口只调用一次,他也有可能在所在代码中还有别的用处,所以我们通常会将接口的定义放到方法外面,

 public class AccountServiceImpl implements AccountService {private AccountDao accountDao = new AccountDaoImpl();@Overridepublic void transfer(String fromActno, String toActno, double money) throws MoneyNotEnoughException, AppException {...

注意:在每个层都有每个曾负责的东西,例如不要在到层书写和业务逻辑相关的东西,他就只负责CRUD,其余不要乱放,这也体现了MVC的解耦合终极用途;

namespace的作用是什么?

Mapper文件中的namespace?

Mapper文件中的namespace用于绑定Dao接口。在MyBatis中,namespace的值应该设置为对应的Dao接口的全类名,以实现面向接口编程。

  1. 在MyBatis中,mapper文件中的namespace是用来唯一标识该mapper文件的,它通常与对应的Mapper接口的全限定名相同。namespace的作用主要有以下几个方面:

    1. 命名空间管理:MyBatis中可以存在多个mapper文件,每个mapper文件中可能包含多个SQL语句。通过namespace来对这些SQL语句进行分类管理,方便组织和查找。

    2. 避免冲突:使用namespace可以避免不同mapper文件中相同ID的SQL语句冲突。namespace使得每个SQL语句有了独立的标识,确保了其唯一性。

    3. 映射关系绑定:namespace与Mapper接口的全限定名相同,它们之间建立了映射关系。MyBatis会根据namespace和方法名,自动找到对应的mapper文件和SQL语句执行。

初次认识是,我们的web项目中会有很多的Mapper文件(一般是一张表对应一个Mapper文件),我们操作数据库中的表时,一个大型的项目中坑定有很多的Mapper文件,在业务代码中我们会通过sqlsession对象调用执行数据的方法例如select或者update等等,调用的时候我们会传入一个id,然后通过id去到配置文件中去找出对应的配置的sql语句,并执行,但是一旦Mapper文件变得很多,呢我我们如何快速找出id多对应的Mapper文件,此时就需要到了namespace。我们在书写sqlsession调用的方法的参数中的id时,就要写namespace.selectbyid,这样就可以快速找见对应的Mapper文件;

 //Mapper配置文件<mapper namespace="user">//对应的java代码SqlSession sqlSession = util.getSqlSession();int updateData = sqlSession.update("user.UpdateEmployeeData", 4);

ORM思想(对象关系映射思想)

ORM(对象关系映射)是一种编程思想和技术,用于将关系型数据库中的表结构映射到面向对象编程语言中的对象模型。

ORM 的基本思想是通过定义对象和数据库表之间的映射关系,使得开发人员可以像操作对象一样操作数据库,而不需要直接编写SQL语句。

ORM 的优点包括:

  1. 简化开发:ORM 提供了一种易于理解和使用的编程模型,开发人员可以直接使用对象的方法和属性来操作数据库,从而免去了复杂的SQL语句和数据库细节。

  2. 提高可维护性:通过将数据库和应用程序的逻辑分离,使得代码更加模块化和可维护。当数据库结构改变时,只需更新映射定义,而不需要修改大量的业务逻辑代码。

  3. 提高可移植性:ORM 可以隐藏不同数据库之间的差异,使得应用程序可以比较容易地切换或同时支持多种数据库。

  4. 提供对象级的查询和持久化:ORM 不仅提供了方便的增删改查操作,还支持复杂的查询和关联操作,可以方便地处理对象之间的关系。

常见的ORM框架包括Hibernate(Java)、Django ORM(Python)、Entity Framework(.NET)等。这些框架都提供了一套映射规则和API,使得开发人员可以更轻松地进行数据库操作,提高开发效率和代码质量。

其中提供了一套映射规则和API

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

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

相关文章

以哈战争或推动美国「屠杀」比特币

摘要&#xff1a;加密货币公司急于在国会对以色列被袭引发的审查之前采取行动。 作者&#xff1a;JASPER GOODMAN 来源&#xff1a;POLITICO 编译&#xff1a;WEEX Exchange 原文标题&#xff1a;How Elizabeth Warren is making Hamas crypto’s latest Washington woe 编者按…

TODO Vue typescript forEach的bug,需要再核實

forEach 一個string[]&#xff0c;只有最後一個匹配條件有效&#xff0c;其它條件無效。 所以&#xff0c;只能替換成普通的for循環。 console.log(taskList)// for (const _task of taskList.value) {// if (_task invoiceSendEmail) {// form.value.invoiceSendEmail…

RESR开发

REST简介 REST(Representation State Transfer),表现形式状态转换 优点 隐藏资源的访问行为&#xff0c;无法通过地址得知对方资源是何种操作书写简化 按照REST风格访问资源时使用行为动作区分对资源进行了何种操作。 根据REST风格对资源进行访问是RESTFUL REST风格 Restfu…

java如何导入导出excel

在Java中&#xff0c;可以使用多种方式导入和导出Excel文件。下面将详细介绍几种常见的方法及其实现步骤&#xff1a; 1. Apache POI库&#xff1a; Apache POI是一个开源的Java库&#xff0c;提供了许多类和方法用于处理Microsoft Office格式的文档&#xff0c;包括Excel文件…

图像处理软件Photoshop 2023 mac新增功能 ps 2023中文版

​Photoshop 2023 mac是一款功能强大、易用且灵活的图像编辑软件&#xff0c;旨在满足专业设计师和摄影师的需求。无论您是处理照片、制作图形还是进行艺术创作&#xff0c;Photoshop 2023 都能为您提供丰富的工具和效果&#xff0c;帮助您实现创意想法。Photoshop还支持多种文…

Protocols/面向协议编程, DependencyInjection/依赖式注入 的使用

1. Protocols 定义实现协议&#xff0c;面向协议编码 1.1 创建面向协议实例 ProtocolsBootcamp.swift import SwiftUI/// 颜色样式协议 protocol ColorThemeProtocol {var primary: Color { get }var secondary: Color { get }var tertiary: Color { get } }struct DefaultCol…

Springboot结合Mockito写单元测试实践和原理

文章目录 前言一、使用最佳实践使用场景SpyBean失效场景解决Mock失效的问题避免FactoryBean的实现方式使用MockBean&#xff0c;但是要指定name 个人推荐 二、原理1. MockBean2.SpyBean方法调用 总结 前言 相信看我博客的都是javaer&#xff0c;工作中一般都是使用Springboot框…

已经有多人中招,不要被AI换脸技术骗了!

您好&#xff0c;我是码农飞哥&#xff08;wei158556&#xff09;&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f4aa;&#x1f3fb; 1. Python基础专栏&#xff0c;基础知识一网打尽&#xff0c;9.9元买不了吃亏&#xff0c;买不了上当。 Python从入门到精…

汽车辅助系统

目录 一&#xff0c;项目描述 二&#xff0c;项目 功能 三&#xff0c;代码实现 &#xff08;1&#xff09;倒车雷达 (2)AD&#xff08;对 雨滴与光敏电阻传感器进行AD采集&#xff09; &#xff08;3&#xff09;雨刷 &#xff08;4&#xff09;灯光 最后总结&#xf…

vue 树状结构数据渲染 (java 处理 list ->树状)

树状结构 Element ui https://element.eleme.cn/#/zh-CN/component/tree <el-tree :data"data" :props"defaultProps" node-click"handleNodeClick"></el-tree><script>export default {data() {return {data: [{label: 一级…

功能集成,不占空间,同为科技TOWE嵌入式桌面PDU超级插座

随着现代社会人们生活水平的不断提高&#xff0c;消费者对生活质量有着越来越高的期望。生活中&#xff0c;各式各样的电气设备为我们的生活带来了便利&#xff0c;在安装使用这些用电器时&#xff0c;需要考虑电源插排插座的选择。传统的插排插座设计多暴露于空间之中&#xf…

pdf转二维码怎么做?pdf二维码制作简单技巧

pdf是一种很常见的文件储存格式&#xff0c;一般通知、发票、简历都会保存为这种格式来使用&#xff0c;那么需要将pdf格式文件做成二维码&#xff0c;该用什么方式来制作呢&#xff1f;下面给大家分享一个pdf转二维码的在线工具&#xff0c;可以通过上传文件一键生成二维码&am…

优思学院|六西格玛的发展历程是怎样的?

在商业世界的星空中&#xff0c;有一颗璀璨的星星&#xff0c;它的名字叫做六西格玛。这颗星星不是一夜之间闪耀登场的&#xff0c;而是在商界的无尽深夜中&#xff0c;逐渐积累了耀眼的光芒。今天&#xff0c;我就来为大家介绍一下六西格玛的发展历程吧。 西格玛是啥&#xff…

设备健康管理系统PreMaint如何帮助制药企业符合GMP认证要求

在制药行业&#xff0c;确保药品的质量、安全性和有效性是至关重要的。为了满足这一需求&#xff0c;药品生产质量管理规范&#xff08;GMP&#xff09;被广泛采用作为制药企业达到国际质量标准的基础。然而&#xff0c;制药企业在追求GMP认证标准时面临着不少挑战。本文将探讨…

解决 阿里云oss 对象存储 bucket 中的文件不能在线预览 只能下载

我的域名是在腾讯云的&#xff0c;所以点开腾讯云的域名解析后台。 点击添加记录&#xff1b; 记录类型选 CNAME&#xff1b;主机记录 随便写&#xff1b;解析线路 默认&#xff1b; 记录值 填你的bucketname 就是你存储文件的bucket的名字 然后 . 域名所在区域 北京就是oss-c…

001.第一个C语言项目

Visual studio2022的使用 创建第一个C语言项目和源文件 https://blog.csdn.net/qq_45037165/article/details/124520286 第一个C语言项目 #include<stdio.h> int main() {printf("Hello World");return 0; }运行结果&#xff1a; 第一行为库函数&#xff0…

Richard Stallman 正在与癌症作战

导读为了纪念 GNU 项目成立 40 周年&#xff0c;自由软件基金会&#xff08;FSF&#xff09;已计划在 10 月 1 日&#xff08;即GNU 40&#xff09;为家庭、学生以及美国的其他人群组织一场黑客马拉松活动。 活动之前&#xff0c;GNU 项目于 9 月 27 日迎来了 40 岁生日&#…

windows中elasticsearch7中添加用户名密码验证

1.找到elsatic的bin目录输入cmd 2.生成ca证书 输入 elasticsearch-certutil ca 在es7根目录生成ca证书&#xff0c;输入密码时直接回车即可&#xff0c;否则后面会报错 Please enter the desired output file [elastic-stack-ca.p12]: #这里直接回车即可 Enter password for…

airflow报ModuleNotFoundError: No module named ‘dags‘原因和解决方法

ModuleNotFoundError: No module named ‘dags’ 原因&#xff1a;airflow默认是从dags目录下开始搜所有模块&#xff0c;如果你加上dags目录名&#xff0c;就相当于在dags目录下找dags包。 解决方法&#xff1a;导入的时候&#xff0c;去掉dags&#xff0c;详细可以参考下面案…

Eclipse Xtext 实现PLC ST 语言到C的转换

Eclipse Xtext 是开发领域专用语言&#xff08;DSL&#xff09;的工具。例如数据库的SQL 语言&#xff0c;PLC 的ST 语言都是一种领域专用语言。在开放自动化领域&#xff0c;提倡基于模型的设计方法。DSL 是描述模型的强有力工具。 在开发PLC 程序IDE时&#xff0c;开发ST编译…