关于表变动而导致的实体变动问题

简介: 因为表变动而导致的实体变动问题,出现这种情况较多的是版本迭代的时候。 项目开发初期,表变动导致的代码改动量相对较小,改动后出现的问题也比较少。而在项目迭代的过程中,因为项目已经成型,大部分代码的逻辑和用法都已固定。

因为表变动而导致的实体变动问题,出现这种情况较多的是版本迭代的时候。

项目开发初期,表变动导致的代码改动量相对较小,改动后出现的问题也比较少。而在项目迭代的过程中,因为项目已经成型,大部分代码的逻辑和用法都已固定。此时表变动将有可能导致大量业务逻辑代码不可用。

这篇文章就说说因为表变动而需要修改的代码部分。

在此之前先说两个修改代码的小诀窍

修改代码的诀窍

诀窍一:

如果你用的开发工具是 IDEA 的话,你可以选中类名,然后按下 shift + F6 ,这时候会出现修改类名的对话框。在此处修改类名,将会把项目中有项目引用的地方一起修改。这个方法不仅方便,而且可以使你知道哪些地方的代码受到影响。

修改类名的对话框如下图:

_

诀窍二:

如果你用的开发工具是 IDEA 的话,当你删除类的时候会弹出如下对话框:

_1

选择“Safe delete(with usage search)”,点击“OK”,此时会出现如下对话框:

_2

点击“View Usages”,此时会出现如下对话框:

_3

你将看到因为删除类而产生的影响,即该类在哪些地方被引用了。

因表变动而导致的实体变动有以下四种修改方式:

说明:以下说明采用的示例均为原表是 User,现改为 BaseUser。

方式一:

先创建新表的实体类,然后删除旧表的实体类,即创建完 BaseUser 的实体之后,直接删除 User 实体。之后通过开发工具的报错信息,或者项目启动时候的报错,对项目中受到影响的代码进行修改。

开发工具的报错信息如下图:

_

项目启动时候的报错信息如下图:

_

优点:

能够快速定位受到影响的代码位置。

缺点

  1. 代码改动量大。
  2. 由于旧实体的删除而导致代码逻辑理解错误。
  3. 无法短时间内启动项目,必须把代码一次性改好。

方式二:

先创建新表的实体类,然后找出引用该实体相关代码将新旧实体进行替换,等全部替换完后再进行旧代码的删除。

优点:

  1. 可以短时间内对修改过的代码进行调试。
  2. 原业务逻辑都在,在修改代码时可以参考。

缺点:

在删除旧实体之前,容易遗漏受到影响的代码,从而导致项目开发进度受到影响(这个影响可大可小)。

方式三:

创建新表实体类,同时创建新表实体类的service、mapper等相关文件,之后将旧实体类的相关代码迁移到新表实体类的相关代码中。即同时 BaseUser 、BaseUserController、IBaseUserService、BaseUserServiceImpl、BaseUserMapper、BaseUserMapper.xml,之后将 User 、UserController、IUserService、UserServiceImpl、UserMapper、UserMapper.xml 的相关代码迁移到之前创建的代码中。

优点:

  1. 可以短时间内对修改过的代码进行调试。
  2. 原业务逻辑都在,在修改代码时可以参考。

缺点:

  1. 在删除旧实体之前,容易遗漏受到影响的代码,从而导致项目开发进度受到影响(这个影响可大可小)。
  2. 代码修改量大

方式四:

将旧实体类的表映射直接替换为新表的映射,即将原来的 @TableName("USER") 修改为 @TableName("BASE_USER"),同时将旧表实体的属性改为新表实体的属性。具体修改方式如下:

@EqualsAndHashCode(callSuper = true)
@TableName("BASE_USER")
@Data
public class User extends Model<User> {
    /**
     * 用户ID
     */
    @TableId(value = "ID",type = IdType.AUTO)
    private Integer id;
    /**
     * 用户名
     */
    @TableField("NAME")
    private String name;
    ......
}

优点:

  1. 在表字段修改不多的情况下,此种方法代码改动量最小。
  2. 可以短时间内对修改过的代码进行调试。

缺点:

由于旧实体的变动而导致代码逻辑理解错误。

综合以上四个方法,第四个方法相对较好

相关文章
|
XML 安全 Java
Android Studio App开发之绘制简单的动画图像(附源码,简单易懂)
Android Studio App开发之绘制简单的动画图像(附源码,简单易懂)
490 1
|
XML 算法 Java
Android Studio App开发之利用图像解码器ImageDecoder播放GIF动图、Webp、HEIF图片(附源码 简单实用)
Android Studio App开发之利用图像解码器ImageDecoder播放GIF动图、Webp、HEIF图片(附源码 简单实用)
1314 0
|
数据库 Android开发 数据库管理
【Android】使用android studio查看内置数据库信息
【Android】使用android studio查看内置数据库信息
1275 0
|
XML Java Android开发
Android Studio中视图基础之设置视图的宽高、间距、对齐方式的讲解与实战(附源码 超详细必看)
Android Studio中视图基础之设置视图的宽高、间距、对齐方式的讲解与实战(附源码 超详细必看)
1012 0
|
物联网 Android开发
Android 蓝牙BLE开发从官方源码demo开始(二)
Android 蓝牙BLE开发从官方源码demo开始(二)
|
JavaScript 前端开发
很有用的Jquery代码片段(转)
代码片段1: 在表单中禁用“回车键” 大家可能在表单的操作中需要防止用户意外的提交表单,那么下面这段代码肯定非常有帮助: 在线调试 在线演示 $("#form").keypress(function(e) { if (e.which == 13) { return false; }}); 代码片段2: 清除所有的表单数据 可能针对不同的表单形式,你需要调用不同类型的清楚方法,不过使用下面这个现成方法,绝对能让你省不少功夫。
762 0
|
5天前
|
人工智能 JSON 监控
Claude Code 源码泄露:一份价值亿元的 AI 工程公开课
我以为顶级 AI 产品的护城河是模型。读完这 51.2 万行泄露的源码,我发现自己错了。
3955 9
|
15天前
|
人工智能 JSON 机器人
让龙虾成为你的“公众号分身” | 阿里云服务器玩Openclaw
本文带你零成本玩转OpenClaw:学生认证白嫖6个月阿里云服务器,手把手配置飞书机器人、接入免费/高性价比AI模型(NVIDIA/通义),并打造微信公众号“全自动分身”——实时抓热榜、AI选题拆解、一键发布草稿,5分钟完成热点→文章全流程!
11599 134
让龙虾成为你的“公众号分身” | 阿里云服务器玩Openclaw
|
3天前
|
人工智能 数据可视化 安全
王炸组合!阿里云 OpenClaw X 飞书 CLI,开启 Agent 基建狂潮!(附带免费使用6个月服务器)
本文详解如何用阿里云Lighthouse一键部署OpenClaw,结合飞书CLI等工具,让AI真正“动手”——自动群发、生成科研日报、整理知识库。核心理念:未来软件应为AI而生,CLI即AI的“手脚”,实现高效、安全、可控的智能自动化。
1406 5
王炸组合!阿里云 OpenClaw X 飞书 CLI,开启 Agent 基建狂潮!(附带免费使用6个月服务器)

热门文章

最新文章