AOP统一处理修改人创建人修改时间创建时间
Posted Snowman
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AOP统一处理修改人创建人修改时间创建时间相关的知识,希望对你有一定的参考价值。
1.配置拦截
<bean id="dalAop" class="com.biz.common.aop.DalAop" /> <aop:config> <aop:aspect ref="dalAop" > <aop:before method="beforeInsert" pointcut="execution(* com.dal.*.mapper.*.insert*(..))" /> <aop:before method="beforeUpdate" pointcut="execution(* com.dal.*.mapper.*.update*(..))" /> <aop:before method="beforeUpdate" pointcut="execution(* com.dal.*.mapper.*.remove*(..))" /> <aop:before method="beforeUpdate" pointcut="execution(* com..dal.*.mapper.*.delete*(..))" /> </aop:aspect> </aop:config>
2.实体类
package com.biz.common.aop; import java.util.Date; import java.util.Map; import javax.annotation.Resource; import org.apache.commons.lang.StringUtils; import org.aspectj.lang.JoinPoint; import org.springframework.beans.BeanWrapper; import org.springframework.beans.BeanWrapperImpl; import com.auth.privilege.PrivilegeInfo; /** * 类DalAop.java的实现描述:对DAO插入和更新方法的拦截,并设置公共字段的信息 * * */ public class DalAop { private static final String CREATOR = "creator"; private static final String MODIFIER = "modifier"; private static final String GMTCREATE = "gmtCreate"; private static final String GMTMODIFIED = "gmtModified"; @Resource private PrivilegeInfo privilegeInfo; public void beforeInsert(JoinPoint jp) { Object[] args = jp.getArgs(); if (args != null && args.length > 0) { Object argument = args[0]; BeanWrapper beanWrapper = new BeanWrapperImpl(argument); // 设置创建时间和修改时间 if (beanWrapper.isWritableProperty(GMTCREATE)) { beanWrapper.setPropertyValue(GMTCREATE, new Date()); } if (beanWrapper.isWritableProperty(GMTMODIFIED)) { beanWrapper.setPropertyValue(GMTMODIFIED, new Date()); } // 设置创建人和修改人 if (beanWrapper.isWritableProperty(CREATOR) && privilegeInfo != null && StringUtils.isNotBlank(privilegeInfo.getWorkNo())) { beanWrapper.setPropertyValue(CREATOR, privilegeInfo.getWorkNo()); } if (beanWrapper.isWritableProperty(MODIFIER) && privilegeInfo != null && StringUtils.isNotBlank(privilegeInfo.getWorkNo())) { beanWrapper.setPropertyValue(MODIFIER, privilegeInfo.getWorkNo()); } } } @SuppressWarnings({ "rawtypes", "unchecked" }) public void beforeUpdate(JoinPoint jp) { Object[] args = jp.getArgs(); // myBatis只能传递一个参数 if (args != null && args.length > 0) { Object argument = args[0]; // 如果argument是map类型 if (argument instanceof Map) { Map map = (Map) argument; map.put(GMTMODIFIED, new Date()); if (privilegeInfo != null && StringUtils.isNotBlank(privilegeInfo.getWorkNo())) { map.put(MODIFIER, privilegeInfo.getWorkNo()); } } else { BeanWrapper beanWrapper = new BeanWrapperImpl(argument); if (beanWrapper.isWritableProperty(GMTMODIFIED)) { beanWrapper.setPropertyValue(GMTMODIFIED, new Date()); } if (beanWrapper.isWritableProperty(MODIFIER) && privilegeInfo != null && StringUtils.isNotBlank(privilegeInfo.getWorkNo())) { beanWrapper.setPropertyValue(MODIFIER, privilegeInfo.getWorkNo()); } } } } }
以上是关于AOP统一处理修改人创建人修改时间创建时间的主要内容,如果未能解决你的问题,请参考以下文章
创建一个叫做机动车的类: 属性:车牌号(String),车速(int),载重量(double) 功能:加速(车速自增)减速(车速自减)修改车牌号,查询车的载重量。 编写两个构造方法:一个没有(代码片段