创建人/创建时间/最后修改人/最后修改时间封装处理

来源:互联网 发布:过山车大亨1 mac 编辑:程序博客网 时间:2024/06/05 17:33

一般的项目中的表都有这四个字段,创建人、创建时间、最后修改人、最后修改时间。便于我们运营过程中找到 责任人。一般情况下我们需要在service add update remove处加上将这四个字段的值set进去,这样的话代码有点冗余,不便于统一管理,我们可以这样封装。

第一种办法

所有JAVABean或POJO或MODEL实体继承一个Base实体,在Base实体中的get方法里返回相关。这样的话也方便将来序列化。但继承了就会有依赖。

第二种办法

通过反射填充这四个字段。如下代码:

/** * 通过反射填充表字段。JAVA实体类中的属性:创建人、创建时间、最后修改人、最后修改时间。开发人员只需要在需要set的代码处调用改方法即可。 * @author Belen */public abstract class InitDataUtil {/** * 自动填充为"对象o"填充创建人,创建时间,最后修改人,最后修改时间. * @author Belen * @date 2016-6-29 */public static void fill(Object o){fillAdd(o);fillEdit(o);}/** * 自动填充为"对象o"创建人,创建时间 * @author Belen * @date 2016-6-29 */public static void fillAdd(Object o){Class<?> c = o.getClass();Field createPersonField = searchFields(c.getDeclaredFields(), "createPerson");try {if (createPersonField != null) {createPersonField.setAccessible(true); // 取消访问检查createPersonField.set(o, USERNAME); // 获取当前登录人用户名}Field createTimeField = searchFields(c.getDeclaredFields(), "createTime");if (createTimeField != null) {createTimeField.setAccessible(true); // 取消访问检查createTimeField.set(o, new Date());}} catch (Exception e) {throw new RuntimeException(e);} }/** * 自动填充为"对象o"最后修改人,最后修改时间. * @author Belen * @date 2016-6-29 */public static void fillEdit(Object o){Class<?> c = o.getClass();Field lastModifyPersonField = searchFields(c.getDeclaredFields(), "lastModifyPerson");try {if (lastModifyPersonField != null) {lastModifyPersonField.setAccessible(true); lastModifyPersonField.set(o, USERNAME); // 获取当前登录人用户名}Field lastModifyTimeField = searchFields(c.getDeclaredFields(), "lastModifyTime");if (lastModifyTimeField != null) {lastModifyTimeField.setAccessible(true); lastModifyTimeField.set(o, new Date());}} catch (Exception e) {throw new RuntimeException(e);} }// Helpers for fetchers of one field, method, or constructorprivate static Field searchFields(Field[] fields, String name) {String internedName = name.intern();for (int i = 0; i < fields.length; i++) {if (fields[i].getName() == internedName) {return fields[i];}}return null;}}

0 0
原创粉丝点击