zoukankan      html  css  js  c++  java
  • AOP统一处理修改人、创建人、修改时间、创建时间

    1.配置拦截

    首先开启

    <aop:aspectj-autoproxy proxy-target-class="true"/>代理。解释一下下面..的意思是多个
    <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());
                    }
                }
            }
        }
    }
    雪人正在努力……
  • 相关阅读:
    jQuery cookie记住用户名密码自动登录
    MySQL解决8小时内没有进行数据库操作, mysql自动断开连接, 需要重启tomcat的问题
    JavaWeb项目设置Session失效时长,失效后自动跳转页面
    JS通过id获取表格内容,并循环添加到数据库
    JS实现表格Table动态添加删除行
    使用easyUI框架实现select下拉框动态加载option
    MySQL数据库出现Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ...this is incompatible with sql_mode=only_full_group_by的问题
    JS获取系统当前时间
    同一机器不同数据库间关联查询
    Fiddler各模块使用说明
  • 原文地址:https://www.cnblogs.com/nunuAction/p/5946627.html
Copyright © 2011-2022 走看看