主要过程:1.注解定义切面,切点,增强的时机。2.利用反射获取参数的固定字段,并设置值。
这里主要写了第二步
import org.apache.log4j.Logger;
import org.hibernate.EmptyInterceptor;
import org.hibernate.Interceptor;
import org.hibernate.type.Type;
import org.jeecgframework.core.constant.DataBaseConstant;
import org.jeecgframework.core.util.ResourceUtil;
import org.jeecgframework.core.util.oConvertUtils;
import org.jeecgframework.web.system.pojo.base.TSUser;
import org.springframework.stereotype.Component;
import java.io.Serializable;
import java.util.Date;
/**
* Hiberate拦截器:实现创建人,创建时间,创建人名称自动注入;
* 修改人,修改时间,修改人名自动注入;
*/
@Component
public class HiberAspect extends EmptyInterceptor {
private static final Logger logger = Logger.getLogger(HiberAspect.class);
private static final long serialVersionUID = 1L;
public boolean onSave(Object entity, Serializable id, Object[] state,
String[] propertyNames, Type[] types) {
TSUser currentUser = null;
try {
currentUser = ResourceUtil.getSessionUserName();
} catch (RuntimeException e) {
logger.warn("当前session为空,无法获取用户");
}
if(currentUser==null){
return true;
}
try {
//添加数据
for (int index=0;index<propertyNames.length;index++)
{
/*找到名为"创建时间"的属性*/
if (DataBaseConstant.CREATE_DATE.equals(propertyNames[index])
&

本文介绍了如何使用Aop切面在Hibernate保存对象时,自动填充创建人、创建时间和更新时间等固定字段。通过反射获取参数,实现字段值的设置,简化了业务代码。
最低0.47元/天 解锁文章
1607





