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

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

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

大学刚做项目的时候,就在写增删改查,万万没想到 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.hqwc.cn/news/703725.html

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

相关文章

BUUCTF靶场[MISC]荷兰宽带数据泄露、九连环

[MISC]荷兰宽带数据泄露 考点:查看路由器恢复丢失密码的文件 工具:RouterPassView——路由器密码查看工具 工具链接:https://routerpassview.en.lo4d.com/windows RouterPassView是一款老牌的路由器密码查看器,可以一键获取路…

网络安全等级保护在工业控制系统中的应用

工业控制系统(Industrial Control Systems,ICS),是由各种自动化控制组件和实时数据采集、监测的过程控制组件共同构成。其组件包括数据采集与监控系统(SCADA)、分布式控制系统(DCS)、可编程逻辑控制器(PLC)、远程终端(RTU)、智能电子设备(IED),以及确保各…

Linux备份---异地

参考文档:Linux环境实现mysql所在服务器定时同步数据文件到备份服务器(异地容灾备份场景)_mysql异地备份-CSDN博客 通过SSH进行连接: 应用服务器: 通过ssh-keygen -t rsay建立ssh通信的密钥 密钥建立后,…

Python 机器学习 基础 之 监督学习 [ 核支持向量机 SVM ] 算法 的简单说明

Python 机器学习 基础 之 监督学习 [ 核支持向量机 SVM ] 算法 的简单说明 目录 Python 机器学习 基础 之 监督学习 [ 核支持向量机 SVM ] 算法 的简单说明 一、简单介绍 二、监督学习 算法 说明前的 数据集 说明 三、监督学习 之 核支持向量机 1、线性模型与非线性特征 …

VBA 引用从SQL数据库取数据的几个方法

首先,要定义连接的数据集 Set objRec CreateObject("ADODB.Recordset")Set objConn CreateObject("ADODB.Connection")然后在代码中要定义SQL语句,以便获取数据 sqlstr sqlstr " select t1.FBillNo ,t_Item.fname type,t1…

MT3037 新月轩就餐

思路: 此题每道菜的价钱相同,想最小化付的钱即求最小区间长度可以满足“品尝到所有名厨手艺”。 使用双端队列存储元素,队尾不断向后遍历:头->尾 如果队头队尾,则队头往右移一格,直到区间不同元素数m…

使用VMware或VirtualBox安装eNSP Pro并使用CRT连接设备

文章目录 使用Oracle Virtual Box安装eNSP Pro创建虚拟机配置网卡配置带外管理网络 使用VMware Workstation安装eNSP Pro转换文件格式及虚拟磁盘模式配置网卡创建虚拟机配置使用CRT连接管理设备 前一段时间是开放了eNSP Pro的账号权限,但是在写博客时,权…

2024年京东618红包领取口令是什么?2024年618京东红包活动时间是从什么时候开始到几号结束?

2024年京东618红包活动时间 京东618红包活动时间是从2024年5月28日开始,一直持续到6月18日结束。 2024年京东618红包领取方式 在2024年京东618活动时间内,每天都可以打开手机京东APP,输入框搜索红包领取口令「 天降红包882 」,搜…

vue3中实现简繁体转换

由于项目在大陆和台湾同胞同步使用,因此需要实现中文的简繁体转换,实现输入简体,能搜索出简体和繁体的相关内容,输入繁体,也能搜索出简繁体相关内容。忽略简繁体,扩大搜索范围。 引入插件: np…

计算机组成结构—寻址方法

目录 一、指令寻址 二、数据寻址 1.立即寻址 2.直接寻址 3.间接寻址 4.隐含寻址 5.寄存器寻址 6.寄存器间接寻址 7.基址寻址 8.变址寻址 9.相对寻址 10. 堆栈寻址 寻址方式是寻找指令或操作数有效地址的方式,也就是指确定本条指令的数据地址,…

mysql 行转列 case when 和 聚合函数实现

一、原始数据## 二、行转列 第一步 SELECTCASE WHEN SUBSTRING( aaa.cost_code, 1, 3 ) 100 THEN aaa.budget_cost_budget ELSE 0 END b1,CASE WHEN SUBSTRING( aaa.cost_code, 1, 3 ) 300 THEN aaa.budget_cost_budget ELSE 0 END b2,CASE WHEN SUBSTRING( aaa.cost_cod…

STM32的FLASH学习笔记

不同型号的 STM32,其 FLASH 容量也有所不同,最小的只有 16K 字节,最大的则达到了1024K 字节。大容量产品的闪存模块组织如图所示: STM32 的闪存模块由:主存储器、信息块和闪存存储器接口寄存器等 3 部分组成。 ​ ①主…