如何检查哪些Object参数已更改

时间:2015-06-09 10:31:59

标签: java spring

我遇到的情况是我正在更改对象的几个参数值。

UserDetails有大约14个参数。我正在更改几个参数的值并从表单中提交它们。这些值应该在数据库后端更新。

是否有任何内置函数来检查是否有任何值被更改?

2 个答案:

答案 0 :(得分:1)

  

是否有任何内置函数可以说明哪些值发生了变化?

没有

  

是否有任何内置函数来检查是否有任何值发生了变化?

没有

但是,您可以实现自己的方法来测试这些东西。 equals方法易于实现,实际上许多IDE都有“向导”来生成它们。 “改变了什么”的方法更复杂。复杂性在于方法告诉调用者哪些字段已更改,以及调用者如何使用此信息。

或者,Apache Commons提供了一个名为EqualsBuilder的类,它使用反射,等等来根据字段比较对象。

我也同意JB Nizet。如果您正在尝试优化数据库更新,那么您可能会浪费时间。你可能最好只保存所有字段。

考虑一下。除非您的前端缓存在用户更新表单时(或不更新)从数据库读取的字段的旧值,否则您的前端将不得不重新查询数据库以查找旧值。你最好只发出UPDATE以更新所有字段,而不是执行SELECT,然后是条件UPDATE,这是有所改变的。

答案 1 :(得分:0)

可能你可以查看这个链接..我不确定这可以在java中完成。但是,你可以试试javascript。请检查此链接。你可以用EXT.js

handler: function(btn, evt) {
                var f = btn.up('form').getForm();
                f.submit({
                    url: '/some-path-on-my-server/save/,
                    getParams: function(useModelValues) {
                        var falseVal = false;
                        var fieldParams = this.form.getValues(falseVal, true, this.submitEmptyText !== falseVal, useModelValues,  true);
                        return Ext.apply({}, fieldParams);
                    }
                });
            }

https://www.sencha.com/forum/showthread.php?173867-I-want-to-submit-only-dirty-field-values