删除sys_file表中的文件信息后同步操作表单中对应的文件字段信息

需求:由于系统的表单文件上传/删除操作与表单的保存操作不同时进行,所以需要调整
细节:(某个表:A表)表单的文件字段只是保存了上传文件的id,名称,真正的文件保存是保存在一个系统的文件表sys_file中,目前是点击附件删除,发送删除请求,删除了sys_file中对应id的数据,但是A表中的文件字段保存的信息是没有更新的,即:真正的附件已经删除,但是A表还显示有之前保留的附件信息
现要求:删除附件后,A表的文件字段也相应调整

思路1(已实现):

  1. 由于要操作的表不同,所以需要一个标识(tableType),后台根据标识操作指定的表
  2. 需要被操作数据的主键ID(tableId)
  3. 操作的字段名称,如果同一个表单,不同字段的话,需要区分字段(tableField)

在这里插入图片描述

正常情况下:JS获取标签属性然后调用删除接口的时候,传参数即可

$(function () {
    $('.attach').each(function () {
        $(this).attach();
    });
});

在这里插入图片描述
在这里插入图片描述

把标签上的三个属性添加到删除按钮的标签上,(删除按钮()是JS添加的,有附件才有删除按钮)这里的obj就是initAttach()传进来的input,这里获取了attach-del并设置了三个属性,属性的值,就是JSP页面中input标签里面的三个属性的值
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

后台处理,然后操作即可

⚠️过程中出现的特殊情况:
在这里插入图片描述

发现,删除了之后,真实附件删除了,但是表单中附件信息字段没有更新,debug到接口获取参数的时候,发现三个参数都是undefind,然后浏览器页面查看删除按钮,发现,没有拼接到那三个参数,就奇怪了,改的地方都一致(因为这个页面的附件回显不是我完成的,所以,之前默认是,这个回显应该跟JS里面的方法是一致的)
在这里插入图片描述

后续发现,这个obj打印出来就没有我添加的那三个属性,所以,查看发现,这里传入的obj跟JS文件里面那个函数传入的obj是不一致的,所以获取不到添加的属性,所以直接根据name获取标签,获取指定属性值然后传入进行设置
在这里插入图片描述

在这里插入图片描述

然后设置attach-del的标签的属性值就用传入的三个参数,即可

弊端:
这种方法会导致,接口里面要根据不同表单操作不同的dao来操作数据库不同的表,每新增一个,都需要修改接口,代码冗余

由于上述方法存在的问题,想着能不能用反射,页面添加上全类名,字段名,主键名,然后反射获取类对象,设置值之后,调用方法操作数据库,这样的话,以后如果另一个表新增一个附件字段,或者同一个表再多一个附件字段,只需要改页面的标签,而不用动到接口

思路2(未实现):传参数方式与上面的方法一致,接口使用反射,根据参数获取不同的类,获取表单对应的表的对象,修改值之后,调用修改方法,操作数据库

/**
 * 业务表单附件字段删除已经被删除的附件的冗余信息
 */
public void delRedundancyField(String tableId, String tableProperty, String tableService) {
    try {
        // 获取业务service类
        Class serviceClass = Class.forName(tableService);
        // 一般dao继承于baseDao,baseDao再继承于GenericDao
        Class baseClass = serviceClass.getSuperclass();
        Class GenericClass = baseClass.getSuperclass();
        // 小驼峰拼接,方法名首字母大写
        Method getMethod = GenericClass.getMethod("getById");
        logger.info("蟹老板测试:" + getMethod);
//            serviceClass.getMethod()
    }catch (Exception e) {
        e.printStackTrace();
    }

}

这里当初获取不到getById()方法之后,就停止了这个思路,后续想想。
应该是GenericClass里面有getById()的多个重载方法,没有再根据参数列表判断,获取不到

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

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

相关文章

异步编程利器:CompletableFuture深度解析

本文已收录至Github,推荐阅读 👉 Java随想录 微信公众号:Java随想录 文章目录 摘要如何使用源码解析基本结构内部原理执行流程 方法介绍创建对象异步执行任务链式操作异步任务组合异常处理取值与状态超时控制与取消操作依赖完成并发限制记忆…

yum来安装php727

yum 安装php727,一键安装,都是安装在系统的默认位置,方便快捷 先确定linux平台中centos的版本信息,一下内容针对el7 查看linux版本 : cat /etc/redhat-release 查看内核版本命令: cat /proc/version (0)如果有安装好…

频率阈图像滤波

介绍 频率阈图像滤波是一种在频域中进行图像处理的方法,它基于图像的频率分布来实现滤波效果。具体步骤如下: 将原始图像转换到频域:使用快速傅里叶变换(FFT)将图像从空间域转换到频域。对频域图像应用频率阈滤波器&a…

力扣 | 139. 单词拆分

主要是要注意组合的顺序是任意的&#xff01;所以就要先选择目标字串&#xff0c;再选择wordDict public boolean wordBreak(String s, List<String> wordDict) {// dp[i]: 表示前 i 个字符组成的子串是否可以被 wordDict 中的字符串组合而成boolean[] dp new boolean[s…

Prometheus实战篇:Prometheus告警简介

Prometheus告警简介 简介 告警能力在Prometheus的架构中被划分为俩个独立的部分.如下图所示,通过在Prometheus中定义AlertRule(告警规则),Prometheus会周期性的对告警规则进行计算,如果满足告警触发条件就会向Alertmanager发送告警信息 alertManager作为一个独立的组件,负责接…

Jenkins-Pipeline语法总结大全

这里写目录标题 pipeline的组成1、pipeline最简单结构1.1、pipeline1.2、stages1.3、stage1.4、steps1.5、agent 2、post3、pipeline支持的命令3.1、environment3.2、tools3.3、input3.4、options3.5、parameters3.6、parallel3.7、triggers3.8、when pipeline的组成 1、pipel…

GPT-4与DALL·E 3:跨界融合,开启绘画与文本的新纪元

在人工智能的发展浪潮中&#xff0c;MidTool&#xff08;https://www.aimidtool.com/&#xff09;的GPT-4与DALLE 3的集成代表了一个跨越式的进步。这一集成不仅仅是技术的结合&#xff0c;更是艺术与文字的完美融合&#xff0c;它为创意产业带来了革命性的变革。本文将探讨GPT…

12.22 探探 数分 已HR面

岗位信息 1222 3.30PM 1面 40min 能感觉数据基建还不是很完善 因此 问了一些指标体系的问题还挺多 自我介绍能力考察1.说说你是怎么异常归因的以付费场景项目为例2.归因中如果遇到一个页面同时存在有3个实验在跑 无法归因出数据的异常是哪个改动造成的怎么办&#xff1f;3.讲…

抖捧AI实景自动直播,开启2024直播新篇章!

在如今互联网的时代&#xff0c;各个行业的实体商家都面临着新的挑战与机遇&#xff0c;而传统做线下经营的方式&#xff0c;已经逐渐被直播与短视频宣传所超越&#xff0c;但还有不少商家思维存在于传统的宣传方式上&#xff0c;也错失了很多的机会&#xff0c;今天就给大家介…

基于JavaWeb+BS架构+SpringBoot+Vue基于web的多媒体素材管理系统的设计和实现

基于JavaWebBS架构SpringBootVue基于web的多媒体素材管理系统的设计和实现 文末获取源码Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 文末获取源码 Lun文目录 1 绪 论 1 1.1选题背景与意义 1 1.1 研究背景 1 1.2 研究意义…

操作系统--虚拟内存--物理内存

虚拟内存地址: 出现的原因&#xff1a;单片机时代&#xff0c;cpu直接操作物理内存&#xff0c;每次只能有一个进程操作&#xff0c;如果多个 在 4GB 物理内存的机器上&#xff0c;申请 8G 内存会怎么样&#xff1f; 1、明确是32位机器&#xff0c;还是64位机器 32位&#xf…

api网关-kong

选型 api网关相关功能 服务的路由 动态路由负载均衡 服务发现 限流 熔断、降级 流量管理 黑白名单反爬策略 控制台&#xff1a;通过清晰的UI界面对网关集群进行各项配置。 集群管理&#xff1a;Goku网关节点是无状态的&#xff0c;配置信息自动同步&#xff0c;支持节点水…

照片动起来-yanderifier

&#x1f3e1; 个人主页&#xff1a;IT贫道-CSDN博客 &#x1f6a9; 私聊博主&#xff1a;私聊博主加WX好友&#xff0c;获取更多资料哦~ &#x1f514; 博主个人B栈地址&#xff1a;豹哥教你学编程的个人空间-豹哥教你学编程个人主页-哔哩哔哩视频 目录 图片动起来实现步骤 …

典型的无人机打击技术

无人机打击技术主要指的是用于中和、摧毁或干扰无人机&#xff08;UAV&#xff09;的各种技术手段。 这些技术随着无人机的广泛使用而迅速发展&#xff0c;特别是在军事和安全领域。下面是一些主要的无人机打击技术及其原理&#xff1a; 射频干扰&#xff08;RF Jamming&#x…

开源C语言库Melon之日志模块

本文向大家介绍一个名为Melon的开源C语言库的日志模块。 简述Melon Melon是一个包含了开发中常用的各类组件的开源C语言库&#xff0c;支持Linux、MacOS、Windows系统&#xff0c;可用于服务器开发亦可用于嵌入式开发&#xff0c;无第三方软件依赖&#xff0c;安装简单&…

2023年人工智能的最新发展(下)

目录 1.MidJourney&#xff1a; 2.GAN: 3.Diffusion Model 4.DALLE、Disco Diffusion 5.Stable Diffusion 1.MidJourney&#xff1a; 2023年3月&#xff0c;一组中国小情侣的照片在网络上迅速走红。这组照片看起来普通&#xff0c;就像一对小情侣的合影&#xff0c;但实…

【Hudi数据湖】hudi集成hive同步元数据

摘要 Spark/Flink可以使用Hive的metastore&#xff0c;但是Hive无法通过Hive metastore中的Spark/Flink表直接查询数据。为了解决这个问题&#xff0c;可以配置使用Hive sync。在Spark/Flink操作表的时候&#xff0c;自动同步Hive的元数据。这样就可以通过Hive查询Hudi表的内容…

leetcode动态规划问题总结 Python

目录 一、基础理论 二、例题 1. 青蛙跳台阶 2. 解密数字 3. 最长不含重复字符的子字符串 4. 连续子数组的最大和 5. 最长递增子序列 6. 最长回文字符串 7. 机器人路径条数 8. 礼物的最大价值 一、基础理论 动态规划其实是一种空间换时间的基于历史数据的递推算法&…

8.2、5GMEC认识篇

MEC&#xff1a;多接入边缘计算&#xff08;Multi-access Edge Computing&#xff09;&#xff0c;强调的是边缘侧的计算服务。 MEC最大的好处是就近访问业务&#xff1a;MEC是一个资源池&#xff0c;可以部署各种服务器&#xff0c;把需要就近访问的业务部署在MEC的服务器上&a…

400G-哪个形式因素?(QSFP-DD, OSFP, CFP8)

400G收发器形式因素的发展趋势: 随着新技术的出现&#xff0c;采用新的形式因素和特点并不是什么新鲜事。400G时代即将到来&#xff0c;就像之前的技术周期一样&#xff0c;400G市场将针对特定的网络应用提供不同的收发器形式的因素。 下一代收发器外形因子有三个共同属性&am…