成员变量 insert 和 update 的时候更新为默认值 0 就没法用注解可以实现吗?

2023-06-19 14:37:13 +08:00
 cencoroll

rt ,某产品大腿一拍需求一改,某个父级的实体类有一个成员变量要在 insert 和 update 的时候将值变成 0 。网上搜了下 lombok 的 Builder 没法实现,如果是子类就可以用,但是这是一个父类。 @Data 和 @Builde 不能同时用啊。

1438 次点击
所在节点    Java
12 条回复
jalena
2023-06-19 14:41:50 +08:00
abstract?

写个默认方法,再重载?
cencoroll
2023-06-19 14:45:34 +08:00
@jalena 不是,就是一个 entity 类,但是有好几个子类,这些子类 insert 和 update 的时候都需要将某个成员变量改成 0 ,所以想说抽象到父类里去弄
xyjincan
2023-06-19 14:54:46 +08:00
sql 写死咋样
cencoroll
2023-06-19 14:58:04 +08:00
@xyjincan 子类太多了,一个个写死太难顶了
KyleLrz
2023-06-19 15:13:14 +08:00
1.前端穿参数写死=0
2.自定义注解检测继承这个父类的子类 insert/update ,set 值,或者自定义注解拦截 sql 拼接都可以吧,原理是一样的
其实我觉得这种需求多变的前端传参解决巴适一些,下次再改也是前端改,或者在后端入参写死
dumbbell5kg
2023-06-19 17:55:10 +08:00
你可以写个 Aspect 拦截所有 insert 和 update 方法,将对应的 entity 参数设置为 0
wolfie
2023-06-19 18:53:44 +08:00
insert 懂,update 为什么也得修改成默认值?

数据库 default 0 、on update 0 ?
xuanbg
2023-06-20 06:04:33 +08:00
在需要的子类构造函数里写父类的 xx = 0; 或 setXx(0);
cencoroll
2023-06-20 09:11:19 +08:00
@wolfie 伞兵同事,其实我们公司的软件很适合做微服务,结果他技术跟不上,一直不同意搞,然后现在一套框架开发 n 个系统,每个系统之间要数据同步,所以有了个这个某个字段必须为 0 的情况,他那边每隔一分钟就查系统里的 0 ,获取到了他那边就同步,然后修改我这边已同步的为 1.....但是如果我这边数据变更了,也得改回 0 ,他那边还要同步。我都麻了.....
flashBee233
2023-06-20 12:03:17 +08:00
@cencoroll 不能加个更新时间字段吗 ,增量更新更新时间大于上次同步时间的数据就好
dadebucuo
2023-06-20 15:37:11 +08:00
可以考虑自定义一个注解加到子类上, 再自定义一个注解加到需要处理的字段上
再通过 sql 拦截器拦截 insert 和 update 方法, 解析对应的注解对需要处理的字段进行赋值
cencoroll
2023-06-21 08:54:55 +08:00
@flashBee233 有些数据得根据另一字段(例如 status )判断是否需要同步,所以不是所有新增的数据都要同步。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/949973

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX