忽略参数,我首先想到的是
@TableField(exist = false)
但是这个注解忽略增加和更新,我想只在更新时忽略掉,增加不变,请问该怎么做
我想写个自定义注解,但是不知道该怎么做
在实体的参数中写一个注解,在执行更新操作时自动忽略该属性(必须是注解)
是用的什么ORM框架,mybatis参考 自定义 MySqlInjector
@TableField(fill = FieldFill.INSERT)
@TableField(insertStrategy = FieldStrategy.IGNORED) 添加该注解值的字段在Mybatis-plus生成insert sql时会忽略该字段值的判断
@TableField(updateStrategy = FieldStrategy.IGNORED) 添加该注解值的字段在Mybatis-plus生成update sql时会忽略该字段值的判断
@TableField(whereStrategy = FieldStrategy.IGNORED) 添加该注解值的字段在Mybatis-plus生成sql时的where条件中会忽略该字段值的判断
@TableField(insertStrategy = FieldStrategy.IGNORED,updateStrategy = FieldStrategy.IGNORED,whereStrategy = FieldStrategy.IGNORED)
mybatisplus.insertOrUpdateSelective这个方法不是可以根据是否为null来修改,你可以手动将其设为null或者修改时不传不想要修改的值
@RequestParam(value = "xxx", required = false)
@TableField(updateStrategy = FieldStrategy.IGNORED)
@TableField(exist=false)是用来对这个字段进行忽略的,这个忽略的意义一般是用在这张表中没有这个字段的情况下。如果你的表需要对这个字段进行操作,建议你不要这样写。
不知道你为什么如此执着用注解的方式,如果用自定义注解,需要你对自定义的注解写拦截器。
在项目的配置文件中添加如下代码,设置下更新策略为非空,然后更新操作时不传值即可,而且是全局性的,比在每个对象上设置方便多了