upDar 是 JavaBean 工具 :为更简洁的操作javaBean,对javaBean进行简单设置即可达到目的,减少对javaBean操作冗余代码。
演示例子
依赖的jar包
1. json-lib-2.4-jdk15.jar
2. commons-beanutils-1.8.3.jar
3. commons-collections-3.1.jar
4. commons-lang-2.4.jar
5. commons-logging-1.1.1.jar
6. ezmorph-1.0.6.jar
为什么要做这个东西
在以往开发中,我使用的是ssh框架,有个问题一直让我很疑惑,到底该怎么实现.
当我们update操作的时候,有时并不需要把一个model的所有属性都去更新,例如状态等信息是不能被update的.
但是,用ssh在前台传入参数保存到action中后,model中的属性是不可预估的,有可能存在不能更新的属性,但是当使用hibernate的update方法时,那么整个对象的全部属性都被update.会出现很多问题
起初我的解决方法是,在数据库中查出需要修改的model对象,把需要更改的属性一个个set进去.结果大量冗余代码出现.于是放弃这种写法.
使用org.springframework.beans.BeanUtils.copyProperties(Object source, Object target, String[] ignoreProperties)方法,这个方法的作用是,ignoreProperties中存放了不可被修改的属性名,source是需要被修改的model,target是提供修改数据的model.
起初很好用,可后来发现一个问题,有一个用户对象,我们已经对他写好了update方法,并用copyProperties方法对model进行了更新,可随着项目的扩大,用户中需要增加一个属性,但是之前的update方法不可修改这个属性,显然,我们已经记不得再哪使用了copyProperties方法了,我们不能逐个去修改ignoreProperties参数.
于是我觉得应该需要一种更好的方式去解决updateModel的问题了.这样我就写出了一些代码,用来分享给大家.
思路 :
对model的属性进行分组,这样当更新model的时候,只需要传入需要修改的model 和提供数据的model 和需要更新属性的分组名称即可.
设置分组方式:通过注解方式,在model属性的set方法上添加注解,以标注该属性所属分组名称.这样当update方法写好后,若出现任何model属性变化,属性名变化都只需要更改model的 注解配置即可,无需修改update方法.
以这种思路去解决updateModel的问题,我觉得是再好不过,而本工具则实现了这一解决方案.