版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Cainiao111112/article/details/82958731
- 自定义实体类监听器类。
public class DataBaseAuditListener { @PrePersist public void prePersist(Object object) throws IllegalArgumentException, IllegalAccessException { Field[] fields = object.getClass().getDeclaredFields(); for (int i = 0; i < fields.length; i++) { Field field = fields[i]; if (null != field.getDeclaredAnnotation(CreatedDate.class)) { field.setAccessible(true); field.set(object, LocalDateTime.now().withNano(0)); } else if (null != field .getDeclaredAnnotation(LastModifiedDate.class)) { field.setAccessible(true); field.set(object, LocalDateTime.now().withNano(0)); } if (field.getName() == "delFlag") { field.setAccessible(true); boolean delFlag = (boolean) field.get(object); if (!delFlag) { break; } } if (null != field.getDeclaredAnnotation(DeleteBy.class)) { field.setAccessible(true); field.set(object, "aku"); } else if (null != field.getDeclaredAnnotation(DeleteDate.class)) { field.setAccessible(true); field.set(object, LocalDateTime.now().withNano(0)); } } } }
-
- 被@Prepersist注解的方法 ,完成save之前的操作。
- 被@Preupdate注解的方法 ,完成update之前的操作。
- 被@Postpersist注解的方法 ,完成save之后的操作。
- 被@Postupdate注解的方法 ,完成update之后的操作。
3.
在方法中利用反射机制,可以实现对(创建日期,创建者,更新日期更新者,删除日期,删除者)等注解的字段的赋值操作。
4.在实体类中使用@EntityListeners注解引入自定义监听类。