好烦啊,我真的不想写增删改查了!

大家好,我是程序员鱼皮。

很想吐槽:我真的不想写增删改查这种重复代码了!

大学刚做项目的时候,就在写增删改查,万万没想到 7 年后,还在和增删改查打交道。因为增删改查是任何项目的基础功能,每次带朋友们做新项目时,为了照顾更多同学,我都会带大家把增删改查的代码再编写并讲解一遍。

不开玩笑地说,我绝对有资格在简历上写 “自己精通增删改查的编写” 了!

相信很多已经在工作中的小伙伴,80% 甚至更多的时间也在天天写增删改查这种重复代码,也会因此感到烦恼。那大家有没有思考过:如何提高写增删改查的效率?让自己有更多时间进步(愉快摸鱼)呢?

其实有很多种方法,鱼皮分享下自己的提效小操作,看看朋友们有没有实践过~

如何提高增删改查的编写效率?

方法 1、复制粘贴

复制粘贴前人的代码是一种最简单直接的方法,估计大多数开发者在实际工作中都是这么干的。

但这种方式存在的问题也很明显,如果对复制的代码本身不够理解,很有可能出现细节错误。而且不同数据表的字段和校验规则是不同的,往往复制后的代码还要经过大量的人工修改。

还有很多 “小迷糊”,经常复制完代码后忘了修改一些变量名称和注释,出现类似下面代码的名场面:

// 帖子接口
class UserController {
}

方法 2、使用模板

一般新项目都是要基于模板开发的,而不是每次都重复编写一大堆的通用代码。比如我之前给编程导航同学编写的 Spring Boot 后端万用模板,内置了用户注册、账号密码登录、公众号登录等通用能力。基于这种模板二次开发,能够大大提高开发效率,也有助于开发同学遵循一致的规范。

模板支持的功能

然而,使用模板也存在一些风险,如果模板本身有功能存在漏洞,那么所有基于这个模板开发的项目可能都会存在风险。而且别人的模板也不是万能的,建议还是根据自己的开发经验,自己沉淀和维护一套模板。对团队来说,沉淀模板是必须要做的事。

方法 3、AI 工具

利用 AI 工具来生成增删改查的代码是一种新兴的方法。只需要甩给 AI 要生成代码的表结构,然后精准地编写要生成的代码要求,就可以让 AI 快速生成了。

这种方式的优点是非常灵活,能帮开发者提供一些灵感;缺点就是对编写 prompt(提示词)的要求会比较高,而且生成后的代码还是得仔细检查一遍的。

方法 4、超级抽象

这是一种更高级别的代码复用方法。通过设计 通用的 数据模型和操作接口,实现用一套代码满足多种不同业务场景下的增删改查操作。

举个例子,如果有帖子、评论、回答等多个资源需要支持用户收藏功能,系统规模不大的情况下,不需要编写 3 张不同的收藏表、并分别编写增删改查代码。而是可以设计 1 张通用的收藏表,通过 type 字段来区分不同类型的资源,从而实现统一的收藏操作。

像点赞、消息通知、日志、数据收集等业务场景,都可以采用这种方式,通过极致的复用完成快速开发。

但也要注意,千万不要把区别较大的功能强行合并到一起,反而会增加开发者的理解成本;而且如果系统数据量较大,分开维护表更有利于系统的性能和稳定性。

方法 5、代码生成器

这也是非常典型的一种提高增删改查效率的方法。后端可以使用 MyBatis X 插件来生成数据模型和数据访问层的 Mapper 代码,前端可以用 OpenAPI 工具生成请求函数和 TS 类型代码等。

不过用别人的生成器难免会出现无法满足需求的情况,生成后的代码一般还是要自己再修改一下的。

所以,我建议可以使用模板引擎技术,自己开发一套更灵活、更适合自己业务的代码生成器。

比如鱼皮给后端万用模板补充了代码生成器功能,使用 FreeMarker 模板引擎技术实现,定制了 Controller、Service、数据包装类的代码模板。用户只需要指定几个参数,就可以在指定位置生成代码了~ 昨天 AI 答题应用平台的开发中,就是用了这个代码生成器,几分钟写好一套功能。

可以在代码小抄阅读生成器的核心实现代码:https://www.codecopy.cn/post/edkpo4 。之前我从 0 到 1 直播带大家开发过一个 代码生成器共享平台 ,感兴趣的同学也可以学习下,保证能把代码生成玩得很熟练~

方法 6、云服务

这种方式也比较新颖了,利用某些云服务提供的现成的数据库和操作数据库的接口,都不需要自己去编写增删改查了!

比如我之前用过的腾讯云开发 Cloudbase,开通服务后,只要在平台上建号数据表,就能自动得到数据管理页面,可以直接通过 HTTP 请求或 SDK 实现增删改查,尤其适合前端同学使用。

但这种方式的缺点也很明显,灵活性相对差了一些,而且会产生一些额外的费用。

所以还是那句话,没有最好的技术,只有最适合自身需求和业务场景的技术。


以上就是本期分享,也欢迎朋友们留言分享自己的好方法。

可访问我的 Github:https://github.com/liyupi ,了解更多技术和项目内容。

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

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

相关文章

性能测试工具—jmeter的基础使用

1.Jmeter三个重要组件 1.1线程组的介绍: 特点: 模拟用户,支持多用户操作多个线程组可以串行执行,也可以并行执行 线程组的分类: setup线程组:前置处理,初始化普通线程组:编写…

springboot+vue+mybatis物业管理系统+PPT+论文+讲解+售后

快速发展的社会中,人们的生活水平都在提高,生活节奏也在逐渐加快。为了节省时间和提高工作效率,越来越多的人选择利用互联网进行线上打理各种事务,通过线上物业管理系统也就相继涌现。与此同时,人们开始接受方便的生活…

怎样让猫给啥吃啥?生骨肉冻干拌粮哪有猫咪不吃的!

随着科学养猫的普及,生骨肉冻干喂养越来越受欢迎,生骨肉冻干喂养对猫的好处很多,它符合猫咪的天性,可以提供全面的营养,保持牙齿和牙龈的健康,还有助于维持健康的消化系统。然而,许多猫主人在选…

考研操作系统-1.计算机系统概述

目录 操作系统功能 操作系统的发展与分类 操作系统的运行环境 操作系统的体系结构 王道考研操作系统-1.计算机系统概述 操作系统 是指控制和管理整个计算机系统的硬件和软件资源,合理地组织调度计算机的工作和资源的分配;提供给用户和软件方便的接…

GDPU 竞赛技能实践 天码行空 期末小测

1. 除法(原题) 👨‍🏫 实验二:1.简单枚举 输入正整数n,按从小到大的顺序输出所有形如abcde/fghij n的表达式,其中a~j恰好为数字0~9的一个排列(可以有前导0&a…

复杂json解析(其中有一个key的value是json格式的字符串)

app上报的参数如下: {"clientId": "8517895440514039afcf6d3e5d7832ae","dua": "SNDOCKCJPH90_GA&VN900042418&BN0&VCXiaomi&MOM2012K11AC&RL1080_2239&CHIDunknown_unknown&LCID&RV&OSAndroid13&…

邦注科技 即热式节能模温机的原理及应用介绍

模温机是一种用于控制模具温度的设备,它在各种工业领域中发挥着重要作用,特别是在塑料加工行业中。以下是关于模温机的原理及应用的详细介绍: 原理 模温机的工作原理主要是通过加热和冷却功能,维持模具温度在一个恒定的范围内。…

Hadoop 3.4.0 项目实战

1环境基于 上一篇搭建 高可用分布式集群 2 官方提供MapReduce程序 #评估圆周率 cd /data/hadoop/share/hadoop/mapreduce/ hadoop jar hadoop-mapreduce-examples-3.4.0.jar pi 2 6 3 实例项目分析1 #预分析的文件如,如单词统计 # #上传文件到hdfs hdfs …

SOLIDWORKS 2024云服务新功能

一、简单的分享一下,在线观看,轻松标记 在达索系统SOLIDWORKS 2024云服务中,您只需在达索系统SOLIDWORKS中点击按钮,就可以将当前的设计分享给其他人,无论是客户、供应商还是团队内部成员。共享的用户只要打开浏览器里…

一本专业130+总分400+上海交通大学819考研经验上交电子信息与通信工程上岸,真题,大纲,参考书。

今年专业课819信号系统与信号处理130,总分400,复试表现中规中矩(初试分数查到才开始复习复试,希望大家汲取教训,初试考完就可以录取开始准备复试),交大初试比重很高,良心学校&#x…

ASP.NET在线毕业论文提交系统的设计与实现

摘 要 本设计就很好的解决了上面的问题,它不但能实现毕业生论文的在线提交;还能给教师一定的权限,以在线的方式对自己指导的学生的论文进行审核;并且管理员还可以方便的将每个学生的论文信息按统一的论文排版本格式导出成word文…

洗衣洗鞋店做小程序有什么优势?

互联网洗衣洗鞋小程序闪亮登场,想知道这款小程序有何魅力吗? 如今,众多商家纷纷推出预约上门洗鞋服务,💁‍♀️并倾力打造洗鞋小程序,旨在拓展线上销售渠道。🌟那么,这款洗鞋小程序究…

网络配置的加密存储

随着数据泄露事件的增加,扰乱了公司的正常工作周期,企业遭受了损失。事实上,数据泄露可以通过存储加密来控制,存储加密是防止黑客对网络数据库造成严重破坏的最有效方法之一。在网络配置管理器中,存储加密可用于存储设…

Unity 模拟放大镜局部放大UI 效果实现

UI 放大实现 RectTransformUtility.ScreenPointToLocalPointInRectangle(rectScale, eventData.position, eventData.pressEventCamera, out localPos); 使用IPointerDownHandler 获取鼠标点击时的有效负载,并将鼠标坐标转成对应的UI 坐标,rectScale 为…

【Win】一键恢复IE11工具:让旧版浏览器在新系统中重生

微软在2020年8月的时候就已经公告IE11的生命周期终点,多次提醒将在2022年6月15日起不再支持IE 11,呼吁用户尽快转换到Chromium-based Microsoft Edge。微软也陆续终止旗下服务支持这个旧式浏览器。2021年3月,Chrome浏览器已不支持旧IE App。2…

欢迎光临Java中的客“栈”

就目前而言,相信大家对数组、链表还有栈都基本已经有了一些了解,本篇文章将以栈为主体,探究栈和数组,栈和链表之间的一些联系。 当然在开始对栈的学习之前,我们先回顾有关数组、链表的基础知识点。 学习代码就是一个…

四川景源畅信:如何更好的为抖音小店做引流?

在数字化营销的浪潮中,抖音小店作为新兴的电商形态,正以其独特的社交属性和流量优势吸引着众多商家的目光。如何为抖音小店引流,成为许多店主心中的疑问。本文将深入探讨有效提升店铺流量的策略,助你在抖音平台上快速崛起。 一、内…

代码随想录算法训练营第二十五天:树的最后学习

代码随想录算法训练营第二十五天:树的最后学习 如果不对递归有深刻的理解,本题有点难 单纯移除一个节点那还不够,要修剪! #669. 修剪二叉搜索树 力扣题目链接(opens new window) 给定一个二叉搜索树,同时给定最小边界…

shell脚本之sort,uniq,tr,cut,sphit,paste,ecal与正则表达式

sort命令 uniq命令 tr命令 cut命令 sphit命令 paste命令 ecal命令 正则表达式 sort命令 sort命令---以行为单位对文件内容进行排序,也可以根据不同的数据类型来排序 比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序…

通过java将数据导出为PDF,包扣合并单元格操作

最近项目中需要将查询出来的表格数据以PDF形式导出&#xff0c;并且表格的形式包含横向行与纵向列的单元格合并操作&#xff0c;导出的最终效果如图所示&#xff1a; 首先引入操作依赖 <!--导出pdf所需包--><dependency><groupId>com.itextpdf</groupId&…