精华内容
下载资源
问答
  • jpa自动填充字段和忽略更新字段

    千次阅读 2020-03-24 23:13:06
    二、jpa忽略更新字段 为了避免创建人和创建时间被覆盖,我们需要改进一下实体类: 在@Column注解中使用updatable = false /** * 创建人id */ @Column(name = "create_user_id", updatable = false) private Integer ...

    作者:一夕十六川
    希望本篇内容能对大家有所帮助

    一、jpa自动填充字段

    实体类

    @Data
    @Entity
    @Table(name = "user")
    public class User implements Serializable {
    
        private static final long serialVersionUID = -47539914963692882L;
    
        /**
         * 主键id
         */
        @Id
        @Column(name = "id")
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Integer id;
    
        /**
         * 姓名
         */
        @Column(name = "name")
        private String name;
    
        /**
         * 登录账号
         */
        @Column(name = "login_name")
        private String loginName;
    
        /**
         * 登录密码
         */
        @Column(name = "password")
        private String password;
    
        /**
         * 创建人id
         */
        private Integer createUserId;
    
        /**
         * 创建时间
         */
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
        private Date createTime;
    
        /**
         * 更新人id
         */
        @Column(name = "update_user_id")
        private Integer updateUserId;
    
        /**
         * 更新时间
         */
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
        private Date updateTime;
    
    }
    

    以上实体中 创建人、创建时间、更新人、更新时间是我们想要自动填充的字段
    我们可以使用监听器来填充上述四个字段

    字段填充监听器

    @Component
    @Log4j2
    public class DataBaseAuditListener {
        /**
         * 新增数据时,填充创建人和创建时间
         */
        @PrePersist
        public void prePersist(Object object)
                throws IllegalArgumentException, IllegalAccessException {
            // 如果填充字段被分装在一个父类中: Class<?> aClass = object.getClass().getSuperclass();
            Class<?> aClass = object.getClass();
            try {
                // 填充创建用户Id
                addUserId(object, aClass, "createUserId");
                // 填充创建时间
                addOperateTime(object, aClass, "createTime");
            } catch (NoSuchFieldException e) {
                log.error("反射获取属性异常:", e);
            }
    
    
        }
    
        /**
         * 更新数据时,填充更新人和更新时间
         */
        @PreUpdate
        public void preUpdate(Object object)
                throws IllegalArgumentException, IllegalAccessException {
            Class<?> aClass = object.getClass();
            try {
                // 填充更新用户Id
                addUserId(object, aClass, "updateUserId");
                // 填充更新时间
                addOperateTime(object, aClass, "updateTime");
            } catch (NoSuchFieldException e) {
                log.error("反射获取属性异常:", e);
            }
        }
    
    
        /**
         * 新增数据之后的操作
         */
        @PostPersist
        public void postPersist(Object object)
                throws IllegalArgumentException, IllegalAccessException {
    
        }
    
        /**
         * 更新数据之后的操作
         */
        @PostUpdate
        public void postUpdate(Object object)
                throws IllegalArgumentException, IllegalAccessException {
        }
        /**
         * 填充用户id
         *
         * @param object
         * @param aClass
         * @param propertyName 属性名(对应实体类中的属性)
         * @throws NoSuchFieldException
         * @throws IllegalAccessException
         */
        protected void addUserId(Object object, Class<?> aClass, String propertyName) throws NoSuchFieldException, IllegalAccessException {
            Field userId = aClass.getDeclaredField(propertyName);
            userId.setAccessible(true);
            // 获取userId值
            Object userIdValue = userId.get(object);
            if (userIdValue == null) {
                // 在此处使用当前用户id或默认用户id
                Integer id = CommonData.userId;
                userId.set(object, id);
            }
        }
        /**
         * 填充操作时间
         *
         * @param object
         * @param aClass
         * @param propertyName 属性名(对应实体类中的属性)
         * @throws NoSuchFieldException
         * @throws IllegalAccessException
         */
        protected void addOperateTime(Object object, Class<?> aClass, String propertyName) throws NoSuchFieldException, IllegalAccessException {
            Field time = aClass.getDeclaredField(propertyName);
            time.setAccessible(true);
            // 获取time值
            Object createdTimeValue = time.get(object);
            if(createdTimeValue == null) {
                // 使用当前时间进行填充
                time.set(object, new Date());
            }
        }
    
    }
    

    在想要自动填充属性的实体类上加注解@EntityListeners

    @EntityListeners(DataBaseAuditListener.class)
    public class User implements Serializable {
    // 实体内容省略
    ...

    服务类中的保存方法

    @Override
    public void save(User user) {
        userDao.save(user);
    }
    

    我们来测试一下:
    创建成功:
    创建成功
    更新成功:
    更新成功

    至此,jpa字段填充完成
    但是这时也出现了新的问题:
    创建人和创建时间消失了
    这是因为jpa在更新时将所有字段全部更新了,即使字段传了null值
    这时就需要用到第二部分内容了

    二、jpa忽略更新字段

    为了避免创建人和创建时间被覆盖,我们需要改进一下实体类:

    在@Column注解中使用updatable = false

        /**
         * 创建人id
         */
        @Column(name = "create_user_id", updatable = false)
        private Integer createUserId;
    
        /**
         * 创建时间
         */
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
        @Column(name = "create_time", updatable = false)
        private Date createTime;
    

    这时再更新实体,就不会更新创建人和创建时间这两个属性了

    展开全文
  • 在用mybatis-plus封装的updateById方法来更新数据时,想把一个字段设置为null值,但是发现更新后数据没有为null还是原来的值,这是因为mybatis-plus在更新的时候做了null判断,默认不更新为null的传参。 2 解决方法 ...

    1 问题

    在用mybatis-plus封装的updateById方法来更新数据时,想把一个字段设置为null值,但是发现更新后数据没有为null还是原来的值,这是因为mybatis-plus在更新的时候做了null判断,默认不更新为null的传参。

    2 解决方法

    在实体类对应的字段上加注解@TableField(strategy=FieldStrategy.IGNORED),忽略null值的判断,例如

    @TableField(strategy = FieldStrategy.IGNORED)
    private String name;
    

    当@TableField注解有多个值时

    @TableField(value = "user_name", strategy = FieldStrategy.IGNORED)
    private String userName;
    

    在这里插入图片描述
    参考链接:https://blog.csdn.net/qq_39403545/article/details/85334250

    展开全文
  • 我们可以通过svn:ignored 来使svn忽略它们。 1、在Eclipse中,选择Filters... 2.把一些勾去掉,显示所有你想要显示的文件: 3、显示出: 4.、选中需要忽略的文件,鼠标右键--》Team--》添加至svn:...

    在项目中有的文件是不需要添加到版本控制中去的,如:


    我们可以通过svn:ignored 来使svn忽略它们。


    1、在Eclipse中,选择Filters...

    2.把一些勾去掉,显示所有你想要显示的文件:

    3、显示出:

    4.、选中需要忽略的文件,鼠标右键--》Team--》添加至svn:ignore


    5、出现如下:


    6、点击OK,完成!


    展开全文
  • 请问怎么样才能让jpa执行save操作的时候忽略student中为null的值,不参与更新呢? 让结果变成: id name age 1 张三 20   解决办法: 实体类上增加: @Entity @DynamicInsert @DynamicUpdate ...

    spring-data-jpa执行save的更新操作,将实体类传入,怎么忽略实体类中为null的参数进行更新呢?

    比如: student表
    id   name  age
    1     张三    21

    现在执行save(student)的时候,student中id=1,age=20,那么执行成功后就会将数据库中原本这条记录的name修改成null。
    结果就变成了:
    id   name  age
    1               20
    请问怎么样才能让jpa执行save操作的时候忽略student中为null的值,不参与更新呢?
    让结果变成:
    id   name  age
    1     张三    20

     

    解决办法:

    实体类上增加:

    @Entity
    @DynamicInsert
    @DynamicUpdate

    转载于:https://my.oschina.net/u/3852748/blog/2906913

    展开全文
  • 怎样将指定的文件或者指定文件后缀的文件忽略提交。 注: 博客主页: https://blog.csdn.net/badao_liumang_qizhi 关注公众号霸道的程序猿 获取编程相关电子书、教程推送与免费下载。 实现 右击要忽略的文件--...
  • git忽略的文件取消忽略I commonly see Git projects bloated with files and folders that should have been ignored and are now using valuable space in the repository. These files are usually auto-generated...
  • opencv 怎么才可以忽略背景 举报描述不清违规检举侵权投诉| 分享| 2014-11-01 14:14 my瑟 | 浏览 88 次 悬赏:10 编程语言 怎么做到在运动跟踪当中只对运动的物体感兴趣而忽略背景?帧差法和背景差分...
  • 在Eclipse中向远程git...上面的列表就是git提交代码时忽略所有匹配到这些后缀的文件,你也可以在上面追加其他里不想提交的内容 转载自  https://blog.csdn.net/superit401/article/details/73291798 作者 Starzm
  • 1、在第一次同步更新码云的时候操作 2.忽略指定文件 3.忽略指定文件夹 二、把忽略文件、文件夹增加回来 生成忽略条件后会在文件夹下生成一个.gitignore文件 用笔记本打开,删除指定要恢复的条件就行 ...
  • 具体实现在解决方案目录上点右键在乌龟菜单中找到"属性"点开在弹出窗中点"新增"在弹出窗中的"属性"中选择"svn:ignore"然后取值中填上bin和obj各一行确认并提交目录更新然后每次提交解决方案目录的时候就会忽略掉b...
  • 取消git忽略文件

    2018-07-11 12:08:00
    git update-index –assume-unchanged –path 可以忽略文件git update-index –no-assume-unchanged –path 可以取消忽略文件 转载于:https://www.cnblogs.com/LP1204/p/9293777.html...
  • 1.git中怎样实现忽略已经提交过的文件 .gitignore给我们忽略一些git上不想要的文件提供了方便, 但是如果有些文件已经提交给git管理的话 那么设置gitignore是没有作用的但是我们不小心提交了本应该忽略的文件怎么办...
  • 设置SVN忽略文件和目录(三)

    千次阅读 2015-05-29 14:25:46
    需要忽略 bin目录gen目录.classpath文件 .project文件 按照图片在你的工作空间下点击解决
  • 首先创建一个changelist,为了好记,可以叫忽略的或者ignored, new changelist—-忽略的 将文件纳入ignored list 此时,修改了add.jsp,它会在Default里出现,如果我们不想提交,拖动文件到忽略的changelist 只...
  • Beyond Compare如何忽略时间因素

    千次阅读 2018-08-10 15:49:52
    那么在使用Beyond Compare比较文件夹时,如何设置才能忽略时间因素的差异呢? 想要忽略时间因素,具体的操作步骤如下: 步骤一:打开Beyond Compare软件,打开文件夹比较会话界面,单击“浏览文件夹”按钮选择...
  • 使用BeanUtils.copyProperties,对两个实体类进行字段赋值,可以忽略一些不需要更新的字段 private static String[] IGNORE_ISOLATOR_PROPERTIES = new String[]{"id", "creater", "createTime", "updater", ...
  • 2020JAVA面试题附答案(长期更新)

    万次阅读 多人点赞 2018-05-17 22:53:57
    最新更新日志 2018年12月28日:更新了springboot相关面试题, spring更多的内容(类别:开源框架) 2019年11月14日:更新redis缓存雪崩,击穿,穿透相关面试题,更新了tomcat调优相关问题,更新了TCP三次握手四次握手...
  • excel数据是0的都忽略 忽略Excel数据验证中的空白问题 (Ignore Blank Problems in Excel Data Validation) In Monday's blog, you saw how to make simple dependent data validation drop down lists. After ...
  • svn设置提交忽略某些文件或文件夹

    千次阅读 2018-04-14 17:14:07
    本文转载:文章转载来源: svn设置提交忽略某些文件或文件夹
  • 无论是控制面板还是设置项目,都没有能关闭的自动更新的选项,但这难不倒注册表爱好者,今天咱们就彻底关闭Windows Update。来,依次进入"...其实大家都只看到了前面的选项,而忽略了微软挖的大坑,所以用
  • 一、idea安装.ignore插件 File->Settings->Plugins->Marketplace ...三、忽略项目中不需要提交的文件 ....gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理
  • 磁盘:最容易被忽略的性能洼地

    千次阅读 2017-04-25 14:57:42
    当有新的数据写入需要替换旧的数据时,主控制器将把新的数据写入到另外的空白闪存空间上(已擦除状态),然后更新逻辑LBA 地址来指向到新的物理FTL 地址。此时,旧的地址内容就变成了无效的数据,但主控制器并没执行...
  • 如何在SVN中忽略某个文件或文件夹

    千次阅读 2012-09-26 16:17:03
    每个程序员本地的环境都不一样,如果更新至SVN服务器中的话,可能会导致其他程序员系统无法使用。 那么如何在tortoisesvn中忽略掉不希望同步的文件夹呢? 找到这些文件,直接右键,add to ignore list, 之后可以...
  • .git无法忽略target,或者不生效的情况

    千次阅读 2017-09-22 13:57:31
    在git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改根目录中 .gitignore 文件的方法. 但是有时候在项目开发过程中,突然心血来潮想把某些目录或文件加入忽略规则,按照上述方法定义后发现并未...
  • 通过将.gitignore文件添加到仓库,其他开发者更新该文件到本地仓库,以共享同一套忽略规则。   然后就直接写要忽略的文件或者文件夹...
  • 最近在开发的时候遇到了一个特殊的需求:在与表对应的对象中需要添加几个该表中没有的字段,刚开始一听懵逼了,后来缕了一下,恍然大悟,其实说白了就是在...这三种方法修饰的话, A、B、C 三个字段就会被自动忽略
  • 所以一般我们会在app内部集成自动更新功能注:以下逻辑需要服务器支持(当然如果服务器不支持也就做不了自动更新)一、检测新版本 更新升级第一步肯定是检测用户当前安装的app版本下面是获取当前版本代码 /** * ...
  • tortoisegit 忽略assume-unchanged,找回忽略文件的两种方法
  • 好在还是有办法忽略的,网上教程很多,但是文章内容都比较陈旧,而且千篇一律,不知道是我太笨还是怎样,反正就是没有操作成功。于是,我把UserInterfaceState.xcuserstate先删掉,然后提交,然后本地的User...
  • 在开发中搭建测试环境时,经常...这样就带来一个需求,怎样才能在提交时忽略掉这些文件呢?用tortoiseSVN很简单,直接在界面操作添加到ignore list中。在命令行应该怎么做呢? 网上之前看了很多做法,比较多的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 81,487
精华内容 32,594
关键字:

怎样忽略更新