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

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

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

大学刚做项目的时候,就在写增删改查,万万没想到 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 ,了解更多技术和项目内容。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

创新指南 | 企业AI战略 实施方案探讨(上):如何构建基于AI的新商业模型和业务场景

2023年以ChatGPT为代表的生成式AI推出以来,从投资界到企业界都掀起了一股热潮。那么从企业角度来看,生成式AI到底能为业务带来哪些增量呢?企业如何构建基于AI的商业模式并进行落地实施呢? 企业AI战略 实施方案探讨分为上下两篇&am…

内网安全工具之ADExplorer的使用

ADExplorer是域内一款信息查询工具,它是独立的可执行文件,无需安装。它能够列出域组织架构、用户账号、计算机账号登,可以帮助寻找特权用户和数据库服务器等敏感目标。 下载地址:http://live.sysinternals.com/ 连接 下载了ADE…

Java项目:基于ssm框架实现的实验室耗材管理系统(B/S架构+源码+数据库+毕业论文+答辩PPT)

一、项目简介 本项目是一套基于ssm框架实现的实验室耗材管理系统 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 二、技术实现 jdk版本:1.8 …

vue+ts+vite+pinia+less+echarts 前端可视化 实战项目

1.初始化前端 输入 npm init vuelatest 命令 然后 选择需要的插件2.构建完成后 在终端切换到vue-project文件夹下 npm install 下载依赖 3.下载 less样式 npm install less less-loader -D 4.下载axios npm install axios 5.下载echarts npm install echarts -S 6.引入中国…

【Spring security】Note01-pig登录验证过程

🌸🌸 pig 登录验证 🌸🌸 一、大概执行顺序,便于理解 pig spring-security 二、执行过程分析 请求拦截: 当客户端发送请求时,Spring Security 的过滤器链会首先拦截该请求。过滤器链中的每个…

Python-元组

元组(): 1、不可变序列,不能增加、修改、删除元组中的元素,但是是序列,可以有序列的相关操作 ttuple([10,20,30]) print("10在元组中是否存在:",(10 in t)) print("最大值:",max(t)) print(&quo…

熬了快两个月,终于拿到了淘天后端offer!

今年的暑期实习挺难找的,很多同学忙了几个月到现在还没有一个offer,真的很常见!没找到暑期实习的同学千万不要太焦虑,可以留意留意日常实习,日常实习也找不到,那就去完善自己的项目经历,认真准备…

【上海大学计算机组成原理实验报告】五、机器语言程序实验

一、实验目的 理解计算机执行程序的实际过程。 学习编制机器语言简单程序的方法。 二、实验原理 根据实验指导书的相关内容,指令的形式化表示是指采用一种规范化的符号系统,以更清晰、精确地描述和表示指令的逻辑功能和操作步骤。 汇编是一种编程语言…

最新版rancher环境配置安装和集群搭建详细教程记录

🚀 作者 :“二当家-小D” 🚀 博主简介:⭐前荔枝FM架构师、阿里资深工程师||曾任职于阿里巴巴担任多个项目负责人,8年开发架构经验,精通java,擅长分布式高并发架构,自动化压力测试,微服务容器化k…

基础之音视频2

01 前言 02 mp 03 mp实例 简易音乐播放器 04 音频 sound-pool 1.作用 播放多个音频,短促音频 2.过程 加载load- 3.示例 模拟手机选铃声 步骤: 创建SoundPool对象,设置相关属性 音频流存入hashmap 播放音频 05 videoview 3gp 体积小 mp4 …

Redis简单使用

认识Redis redis:字典型数据库,存储的是键值对,是NoSql数据库 关系型数据库和NoSql之间的区别: 结构化:NoSql非结构化数据库,松散结构(键值对key-value(可以任意类型)&…

计算机Java项目|Springboot高校心理教育辅导设计与实现

作者主页:编程指南针 作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简…

计算机寄存器是如何实现的

你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益: 了解大厂经验拥有和大厂相匹配的技术等 希望看什么,评论或者私信告诉我! 文章目录 一…

##22 深入理解Transformer模型

文章目录 前言1. Transformer模型概述1.1 关键特性 2. Transformer 架构详解2.1 编码器和解码器结构2.1.1 多头自注意力机制2.1.2 前馈神经网络 2.2 自注意力2.3 位置编码 3. 在PyTorch中实现Transformer3.1 准备环境3.2 构建模型3.3 训练模型 4. 总结与展望 前言 在当今深度学…

MySQL基础指南:从入门到精通

MySQL基础指南:从入门到精通 MySQL是一个流行的开源关系型数据库管理系统,被广泛用于Web应用程序和服务器端开发。本文将从MySQL的基本概念开始,逐步介绍MySQL的安装、常用操作、数据类型、查询语句等内容,帮助你快速入门MySQL数…

Java码农的福音:再也不怕乱码了

即便是Java这样成熟的语言,开发者们也常常会遇到一个恼人的问题——乱码。 本文将深入探讨乱码的根本原因,并针对Java开发中的乱码场景提出有效的解决方案,辅以实战代码,让Java程序员从此告别乱码困扰。 一,字符集的…

网络安全 会飞的狗狗 网络安全狗是什么

1.概述 网站安全狗是一款集网站内容安全防护、网站资源保护及网站流量保护功能为一体的服务器工具。功能涵盖了网马/木马扫描、防SQL注入、防盗链、防CC攻击、网站流量实时监控、网站CPU监控、下载线程保护、IP黑白名单管理、网页防篡改功能等模块。能够为用户提供实时的网站安…

Redis数据结构-RedisObject

1.7 Redis数据结构-RedisObject Redis中的任意数据类型的键和值都会被封装为一个RedisObject,也叫做Redis对象,源码如下: 1、什么是redisObject: 从Redis的使用者的角度来看,⼀个Redis节点包含多个database&#xff…

我的dcd爬虫-Python

我自己写的dcd爬虫,这个网站比较简单。看了看别人的程序,觉得用起来挺别扭,就自己捣鼓了一天。弄出来了。 这个网站没有反爬,有一些是动态网页,有一些是静态。 首先,获取销量排行榜前300的车型。 import…

JVM—>内存调优(发现问题)

一、什么是内存泄露? 内存溢出和内存泄露 内存泄漏(memoryleak):在Java中如果不再使用一个对象,但是该对象依然在GC ROOT的引用链上,这个对象就不会被垃圾回收器回收,这种情况就称之为内存泄漏。内存泄漏绝大多数情况都是由堆内…