【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.mzph.cn/news/111515.shtml

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

相关文章

9.构造器与垃圾收集器 对象的前世今生

9.1 对象与变量的生存空间 栈与堆&#xff1a;生存空间 在Java中&#xff0c;程序员会在乎内存中的两种区域&#xff1a;对象的生存空间堆&#xff08;heap&#xff09;和方法调用及变量的生存空间&#xff08;stack&#xff09;。当Java虚拟机启动时&#xff0c;它会从底层的…

【Netty专题】【网络编程】从OSI、TCP/IP网络模型开始到BIO、NIO(Netty前置知识)

目录 前言前置知识一、计算机网络体系结构二、TCP/IP协议族2.1 简介*2.2 TCP/IP网络传输中的数据2.3 地址和端口号2.4 小总结 三、TCP/UDP特性3.1 TCP特性TCP 3次握手TCP 4次挥手TCP头部结构体 3.2 UDP特性 四、总结 课程内容一、网络通信编程基础知识1.1 什么是Socket1.2 长连…

django REST framework-使用与不使用的区别?

首先&#xff0c;来回顾一下传统的基于模板引擎的 django 开发工作流&#xff1a; 绑定 URL 和视图函数。当用户访问某个 URL 时&#xff0c;调用绑定的视图函数进行处理。 编写视图函数的逻辑。视图中通常涉及数据库的操作。 在视图中渲染 HTML 模板&#xff0c;返回 HTTP 响应…

互联网摸鱼日报(2023-10-20)

互联网摸鱼日报(2023-10-20) 博客园新闻 OPPO让折叠机超越直板旗舰成为可能 特斯拉的“大空头”&#xff0c;是马斯克那张嘴 逃避内卷的年轻人&#xff0c;盯上了老年大学的音乐课 理想市值超蔚来1倍&#xff0c;一场属于增程式的胜利 补足折叠屏影像短板&#xff0c;OPPO…

软件工程与计算总结(十七)软件构造

一.概述 1.定义 软件构造是以编程为主的活动&#xff0c;类似于软件实现。但软件构造又不止编程这么简单&#xff0c;除了核心的编程任务之外&#xff0c;还设计详细设计&#xff08;数据结构与算法设计&#xff09;、单元测试、集成与集成测试以及其他活动~ 2.软件构造是设计…

redis,mq如何解决重复支付问题

重复支付问题可以通过以下方式解决&#xff1a; Redis解决重复支付问题&#xff1a;Redis可以使用它的原子性操作来避免重复支付问题。可以将每个订单的订单号作为一个key存储在Redis中&#xff0c;并设置一个过期时间。当客户付款时&#xff0c;先检查该订单号在Redis中是否存…

【Android】BRVAH多布局实现

前言 基于3.0.4版本的BRVAH框架实现的 实现方法 1.创建多个不同类型的布局&#xff08;步骤忽略&#xff09; 2.创建数据实体类 数据类要实现【MultiItemEntity】接口 class MyMultiItemEntity(//获取布局类型override var itemType: Int,var tractorRes: Int? null,va…

简单谈谈我参加数据分析省赛的感受与体会

数据分析省赛的感受与体会 概要考试前的感受与体会考试注意事项小结 概要 大数据分析省赛指的是在省级范围内举办的大数据分析竞赛活动。该竞赛旨在鼓励和推动大数据分析领域的技术创新和人才培养&#xff0c;促进大数据技术与应用的深度融合&#xff0c;切实解决实际问题。参…

win32-注册表-32位-64位-读写值-Qt-C++

文章目录 1.32访问64位和64位访问32位2.在Qt中qsetting的使用3.总结 1.32访问64位和64位访问32位 32位的应用程序想访问64位的注册表视图的标志是KEY_WOW64_64KEY&#xff0c;该标志的值是0x0100。64位的应用程序想访问32位的注册表视图的标志是KEY_WOW64_32KEY。以上两个标志…

Android中级——MVVM

MVVM MVVM是什么&#xff1f;MVVM实现前提ModelViewModelView MVVM是什么&#xff1f; Model-View-ViewMode架构&#xff0c;可看作MVP改进版&#xff0c;将此前Presenter的逻辑操作交给ViewMode中的Binder去处理 Mode&#xff1a;封装数据存储及相关操作逻辑&#xff0c;与MV…

URL、域名和网址的区别

网址、域名和URL 都用于描述在互联网上定位资源的标识符&#xff0c;通常它们可以互换使用&#xff0c;但严格来说有区别&#xff1a; URL&#xff08;Uniform Resource Locator&#xff09;&#xff1a;URL是统一资源定位符的缩写&#xff0c;它是一个包含地址信息的完整字符串…

Kali Linux 安装搭建 hadoop 平台 详细教程

1&#xff09;前期环境准备&#xff1a;&#xff08;虚拟机、jdk、ssh&#xff09; 2&#xff09;SSH相关配置 安装SSH Server服务器&#xff1a;apt-get install openssh-server 更改默认的SSH密钥 cd /etc/ssh mkdir ssh_key_backup mv ssh_host_* ssh_key_backup 创建新…

【C++进阶(八)】C++继承深度剖析

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:C从入门到精通⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习C   &#x1f51d;&#x1f51d; 继承 1. 前言2. 继承的基本概念3. 继承关系和访…

酷开会员值得回味的经典老剧还记得吗?酷开系统家庭影院带你重温

那些年&#xff0c;大家的娱乐生活主要集中在那一台9寸的黑白电视机中&#xff1b;那些年&#xff0c;家家户户的孩子们晚上都会聚到电视机前欢声笑语&#xff1b;那些年&#xff0c;是诸多经典的电视剧陪伴了很多人的闲暇时光……那些年陪伴我们成长&#xff0c;在记忆中熠熠生…

下笔如有神:用VS Code写markdown

文章目录 Markdown All in One快捷键指令 输出PDFMarkdown Preview Enhancedmarkdown基本语法 Markdown All in One VS Coode中最推荐的Markdown插件是Markdown All in One&#xff0c;下文简称为mdAIO。千万别搜完markdown后下一个叫Markdown的插件&#xff0c;这个插件的名字…

新年学新语言Go之四

一、前言 任何编程语言都有类型系统&#xff0c;类型系统解决了数据的存取问题&#xff0c;它决定了使用这个类型需要开辟内存空间大小以及数据是如何存放的&#xff0c;也解决如何读出数据&#xff0c;因为在内存中相同二进制值不同类型的含义是不一样的&#xff0c;关于Go基…

Oracle的立场:官网更换首页与以色列站在一起

Oracle公司的官网&#xff0c;更换了首页内容&#xff0c;明确表明立场&#xff1a;Oracle与以色列站在一起。 声明指出&#xff1a; Oracle谴责针对以色列及其公民的恐怖袭击。Oracle将为其员工、以色列政府和国防机构提供一切必要的支持。 Magen David Adom是一家为以色列公民…

MySQL 数据库类型介绍及使用场景

INT、TINYINT、SMALLINT、MEDIUMINT、BIGINT&#xff08;整数类型&#xff09; 整数类型又称数值型数据&#xff0c;数值型数据类型主要用来存储数字。不同的数据类型提供不同的取值范围&#xff0c;可以存储的值范围越大&#xff0c;所需的存储空间也会越大。 MySQL 主要提供…

1024,毕业后工作的五个月

入职 一晃一下又到了1024&#xff0c;彼时已经成为打工人在写分享了&#xff0c;自己已经搬砖5个月了&#xff0c;总感觉4月份拍毕业照、去川渝毕业旅行看plmm还是在昨天&#xff0c;但五月下旬入职到现在已经5个月了。给大家简单的share一下工作和生活。 在5月初光速毁约ks入…

《数据结构、算法与应用C++语言描述》使用C++语言实现数组队列

《数据结构、算法与应用C语言描述》使用C语言实现数组队列 定义 队列的定义 队列&#xff08;queue&#xff09;是一个线性表&#xff0c;其插入和删除操作分别在表的不同端进行。插入元素的那一端称为队尾&#xff08;back或rear&#xff09;&#xff0c;删除元素的那一端称…