基于MyBatis-Plus的Web后端模板引擎研究与应用外文翻译资料

 2023-03-15 11:05:51

基于MyBatis-Plus的Web后端模板引擎研究与应用

摘要:在Web开发中,需要花费大量时间机械化地编写包括业务逻辑代码和集成接口代码在内的高重复性代码,为了解决上述的Web后端编码问题,本文分析了SSM(Spring,SpringMVC和MyBatis)框架和前后端分离的开发模式的优缺点。通过在PHP web开发中集成模板引擎,实现web后端代码生成技术,这有利于Web编码的人工智能化并节省软件开发的时间。

copy; 2020 作者。 由 Elsevier B.V. 出版

这是CC BY-NC-ND许可下的开放获取文章(http://creativecommons.org/licenses/by-nc-nd/4.0/)

第三届机电一体化和智能机器人国际会议(ICMIR-2019)科学委员会负责同行评审。

关键词:后端开发,代码编写,模板引擎

  1. 简介

1.1 软件和Web的背景

随着信息技术的发展,软件的使用涌入了人们的生活,其中就包括娱乐软件和办公软件。 与硬件不同,软件是由一系列计算机数据和指令表组成的。软件不仅是计算机中的程序,文件也是软件的一种。软件包括操作系统软件和应用软件。我们所熟知的Android和iOS操作系统就是流行的操作系统软件。而Web是一种存在于操作系统软件中的应用软件。

1.2 文献论点

软件开发包括应用程序开发、程序开发、移动应用程序开发和Web开发。本文介绍基于Java Web的Web服务端开发(一般称为后端开发)。在Web开发中的设计模式包括MVC(Model, View and Controller)模式、Web Form、Web Page等,但开发人员使用最多的模式是MVC模式。有学者认为 MVC 模式具有高内聚低耦合的优点,但是,也有人认为它会产生编码冗余并且让数据评估效率低下。基于MVC模式的开发模式是一种前后端分离的开发模式。这种模式让开发人员分别负责 Web 开发的不同部分,由此将开发分为前端开发和与接口交互的后端开发。目前最流行的技术框架是SSM(Spring, SpringMVC 和 MyBatis)框架,近几年得到了广泛的应用。与 SSH(Spring、Struts 和 Hibernate)框架不同,SSM框架能更好地处理请求和响应,能适用于 RESTful 编码风格和 MVC 模式。但是,这种开发模式的缺点是每个Model的接口都具有相同的功能接口,导致项目中有很多高重复性代码,浪费了开发人员很多时间。在 PHP 的开发中,这个问题是由 Template Engine 来处理的。由于 Java 和 PHP 之间的差异,只有少数的Java开发人员使用模板引擎生成代码。而这项技术确实有效地解决了这个问题。

2. Web开发的工作原理

2.1 MVC模式

MVC模式是1980年代提出的一种交互界面结构设计模式,也是一种有效的设计模式。 MVC 设计模式强调开发人员根据用户的输入、数据模型和信息显示并以模块化的方式设计他们的软件。 它将一个应用软件分为以下三个部分。

模型(Model)是应用软件的业务逻辑,包括数据和模型。 模型是应用程序的核心功能,它封装了数据和问题解决过程。 用户通过调用Controller调用Model,Model可以为View提供数据,减少代码冗余。

视图(View)是应用程序软件中处理数据显示的部分,它显示各种的信息。 视图是用户看得到和进行交互的界面。 对于 View,数据的获取和问题解决过程将会被忽略,用户可以从中通过调用 Controller 向 Model 发送服务请求来更新 View。

控制器(Controller)是处理交互的应用程序软件的一部分。 Controller将输入的鼠标、键盘等信息转化为对Model和View的服务请求,并将Model的变化响应给View。 用户只能通过 Controller 与软件交互。

一组视图(View)和控制器(Controller)组成一个用户界面,一个模型(Model)可以有多个视图(View)。 如果用户通过Controller改变Model,Controller会将这种改变传播到所有View,从而实现显示的统一。

2.2 后端分离的开发模式

网页是早期的设计模式之一,需要开发者熟练掌握整个 Web 的开发过程。这也需要开发人员了解有关Web开发的所有技术,从而导致开发人员之间的职责边界模糊。 因此,开发人员需要熟练掌握难以维护的 Web 项目中混乱的代码的编写。

由此,MVC 模式对上述问题此进行了改进。 它最明显的改进是端分离开发模式,即项目开发分为前端开发和后端开发两部分。

在这种开发模式下,前端工程师更关注页面表达、用户体验、兼容性等,而后端工程师更关注高性能、安全性和业务逻辑。 显然,与原来的Web Form、Web Page这样的开发模式相比,这样的开发模式并没有降低对开发者的技术要求,反而提高了标准。

2.3 SSM 框架

Spring 是一个开源的 Java 框架。 它是为降低企业项目开发的复杂性而开发的框架。 Spring的核心功能是IOC(Inversion of Control)和AOP(Aspect-Oriented Programming)。 由于这两个核心功能,几乎任何 Java 应用程序都可以从中受益。 并且 Spring 是一个轻量级、低侵入性的开源框架,可以使其与其他框架兼容。

SpringMVC 是 Spring 的子项目,具有与 Spring 相同的低侵入特性。 它是后端开发和前端开发完全分离的框架。换句话说,Spring几乎可以使用任何视图。 此外,Spring 的存在使得 Java Web 的组件在 SpringMVC 中得到了更好的管理。

Mybatis 是 Apache 的一个开源项目 iBatis,后来迁移到 Google 代码中,改名为 MyBatis。 MyBatis 封装了几乎所有的 JDBC 操作,并扩展了参数设置和返回结果集的功能。 通过解析配置文件和对应的映射文件,扩展了原有的JDBC功能,使应用程序与数据库的交互变得简单。

图1 SSM 工作模式图

SSM框架将后端开发分为三层。 它们是控制器层(Layer Controller)、服务层(Layer Service)和 DAO 层(Layer DAO)。 控制器层用于处理相关请求,调用相关服务完成业务逻辑,并选择相应的视图作为反馈给用户。 服务层封装业务逻辑,调用 Dao 层并对异常进行预处理。 MyBatis 集成在服务层,并为 Dao 层操作数据库,持久化数据。

2.4 问题分析

总的来说,SSM框架中后端开发的过程是数据库设计、实体类设计、 DAO层开发、服务层开发、控制器层开发、与前端集成、项目完成。这样,虽然减少了前后端的耦合,代码可维护性高,但仍然存在如下问题。

高代码重复性。在这种开发模式下,几乎对数据库中表的每一个操作都有CRUD(Create、Retrieve、Update和Delete)。 无论是DAO层、服务层还是控制器层,代码重复性都很高。而且,作为后端的底层开发,这个阶段的开发周期是不能缩短的。这种开发使开发人员忙于编码而不是考虑更复杂的业务逻辑。

项目开发周期长。对于企业项目,数据库中可能有数百个表。 CRUD开发时间长,耽误了业务逻辑开发,造成项目开发周期大。

3. 研究方法(Research Methods)和解决方案

3.1 研究方法(Research Methods)

有了以上的问题,我们不难发现,编写这样的代码虽然很简单,但不过是一种机械劳动。所以主要的解决方案的目的是缩短简单CRUD的代码开发周期,提高编码效率。

同样的问题,另一种编程语言PHP,有一个非常有效的解决方案,那就是模板引擎。 Java也使用了相应的技术,但由于两种语言之间存在差异,模板引擎并不是Java的常规开发方法。

3.2 案例分析

由于 PHP 的模板引擎不同于 Java 使用的模板引擎,因此本文暂且不讨论 PHP 模板引擎。 Java的模板引擎主要应用于JSP(Java Server Pages)。 目前只有两种流行的模板引擎:FreeMaker 和 Velocity。 这两个模板引擎的编程语言都很简单。

在分析了相关引擎的框架后,我们发现了一个开源框架,叫做 MyBatis-Plus。 该框架是对 MyBatis 的改进,它改进了 MyBatis 的功能,但不改变 MyBatis 的原始结构。 通过这个框架的扩展功能,我们可以通过模板引擎生成DAO层、 服务层和控制器层(上述提到的SSM框架的三层结构)的代码。

3.3 案例重构

有一点非常重要,这是一个开源框架。因此,很多人分享了这个框架的用例在官网的官方文档上。于是,我们需要做的是对启动类和模板进行编码。

图2 控制器层模板

对于启动类来说,这其中有20多个属性配置。 我们选择最重要的属性进行配置,保持其他属性默认配置,保证开发简单。 经过上述的编写,我们最终修改了属性并成功创建了它们,开发人员只需要修改数据库连接相关连接的配置即可。

对于MyBatis-Plus 的模板来说,生成的服务层和DAO 层都使用了来自 MyBatisPlus 的模板。 我们只需要编写层控制器的模板,它只有五个接口函数。

从图2中,我们可以看到控制器的模板。 代码生成后,该模板会生成相应的类。 该类中有五个功能,分别为插入实体、通过id更新实体、通过id删除实体和为页面选择实体。

4. 应用

4.1 数据库设计

在JDK8、Spring Boot2.0、Maven3.6、MySQL5.7的开发环境下,这里是一个解决用户信息管理问题的数据库经典案例,并建立了对应的数据库表,如表1所示。

表.1 学生表

Column Name

Data Type

Lengt h

Not

Null

Primary

Key

Annotation

id

int

11

Ture

Ture

User ID

userName

varchar

255

Ture

Ture

User Name

password 剩余内容已隐藏,支付完成后下载完整资料


英语原文共 7 页,剩余内容已隐藏,支付完成后下载完整资料


资料编号:[596115],资料为PDF文档或Word文档,PDF文档可免费转换为Word

您需要先支付 30元 才能查看全部内容!立即支付

课题毕业论文、外文翻译、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。