Aop 切面 Hibernate保存方法,自动设定创建人创建时间、更新人、更新时间

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

主要过程: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])
   &
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值