V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cencoroll
V2EX  ›  Java

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

  •  
  •   cencoroll · 2023-06-19 14:37:13 +08:00 · 1431 次点击
    这是一个创建于 515 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    12 条回复    2023-06-21 08:54:55 +08:00
    jalena
        1
    jalena  
       2023-06-19 14:41:50 +08:00
    abstract?

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

    数据库 default 0 、on update 0 ?
    xuanbg
        8
    xuanbg  
       2023-06-20 06:04:33 +08:00
    在需要的子类构造函数里写父类的 xx = 0; 或 setXx(0);
    cencoroll
        9
    cencoroll  
    OP
       2023-06-20 09:11:19 +08:00
    @wolfie 伞兵同事,其实我们公司的软件很适合做微服务,结果他技术跟不上,一直不同意搞,然后现在一套框架开发 n 个系统,每个系统之间要数据同步,所以有了个这个某个字段必须为 0 的情况,他那边每隔一分钟就查系统里的 0 ,获取到了他那边就同步,然后修改我这边已同步的为 1.....但是如果我这边数据变更了,也得改回 0 ,他那边还要同步。我都麻了.....
    flashBee233
        10
    flashBee233  
       2023-06-20 12:03:17 +08:00
    @cencoroll 不能加个更新时间字段吗 ,增量更新更新时间大于上次同步时间的数据就好
    dadebucuo
        11
    dadebucuo  
       2023-06-20 15:37:11 +08:00
    可以考虑自定义一个注解加到子类上, 再自定义一个注解加到需要处理的字段上
    再通过 sql 拦截器拦截 insert 和 update 方法, 解析对应的注解对需要处理的字段进行赋值
    cencoroll
        12
    cencoroll  
    OP
       2023-06-21 08:54:55 +08:00
    @flashBee233 有些数据得根据另一字段(例如 status )判断是否需要同步,所以不是所有新增的数据都要同步。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2688 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 04:19 · PVG 12:19 · LAX 20:19 · JFK 23:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.