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());
                }
            }
        }
    }
}
时间: 2024-11-05 15:49:16

AOP统一处理修改人、创建人、修改时间、创建时间的相关文章

windows10用powershell修改文档/文件夹创建时间、修改时间、访问时间

参考博文:windows用powershell修改文档/文件夹创建时间.修改时间 用win10自带的powershell可以轻松修改文档/文件夹创建时间.修改时间.而且可以批量修改. 1. 步骤: 新建一个bat文件,在其中添加语句: @ECHO OFF powershell.exe -command "ls 'folder_path\*.dll' | foreach-object { $_.LastWriteTime = Get-Date; $_.CreationTime = Get-Date

Linux 如何用命令查看binlog文件的创建时间

目录 背景 分析 方法 注意 背景 MySQL在26日 16:23:49产生了大量的慢查询,在这段时间内,binlog文件刷新的很快(查看慢日志是mysql DML并发比较多),想知道写完一个binlog文件究竟花了几分钟时间? 分析 三个binlog文件的最后修改间隔时间分别是2 分钟和1 分钟 同一个事务只能写同一个binlog文件 mysql-bin.016126文件的最后修改时间16:22不一定是mysql-bin.016127 文件创建的时间(存在大事务的情况下,大事务还在写上一个bi

文件属修改器!(创建时间、修改时间等属性修改)

还记得上学时候计算机老师让交作业,那个时候大部分人都是直接Copy别人做好的东西过来改下内容,但是没有人注意到一个问题就是老师肯定不傻,会看文件的创建时间.修改时间等属性,那时候我就找到一个修改文件属性的软件,屡试不爽,哈哈.我相信很多同学有过这样经历吧,今天再把软件整理下打包给大家,有需要的同学可以下来用.所以说Copy也要会Copy,就像写作文一样,看的多了,用的多了,只要会改,那些东西最后都是属于你自己的.不存在抄袭一说,算是借鉴和升华. 点击下载软件 文件属修改器!(创建时间.修改时间等

修改SQL Server数据库表的创建时间最简单最直接有效的方法

说明:这篇文章是几年前我发布在网易博客当中的原创文章,但由于网易博客现在要停止运营了,所以我就把这篇文章搬了过来,因为这种操作方式是通用的,即使是对现在最新的SQL Server数据库里面的操作也是一样的,相信很多朋友都会使用到. ----------------------分割线-------------------- 网络上曾经有很多人询问怎么修改SQL Server数据库表的创建时间,但得到的回答多种多样,有的说需要使用某些软件进行修改,有的说需要修改注册表等等,其实这些方法实施起来不但麻

Web 在线文件管理器学习笔记与总结(2)显示文件列表(名称,类型,大小,可读,可写,可执行,创建时间,修改时间,访问时间)

主要函数: filetype() 判断文件类型 filesize() 得到文件大小(字节) is_readable() 判断文件是否可读 is_writeable() 判断文件是否可写 is_executable() 判断文件是否可执行 filectime() 文件创建时间 filemtime() 文件修改时间 fileatime() 文件访问时间 file.func.php 封装文件操作的文件: <?php /* 转换字节大小 */ function transByte($size){ $ar

天下文章一大抄 之 修改excel 创建时间

Sub ChangeDate()ThisWorkbook.BuiltinDocumentProperties("Creation Date") = #2 28 2016 13:25:25#End Sub 修改excle内部的信息的创建时间.修改完记得保存哦,否则不生效. 注意,此时间为excel内嵌的时间,与文件的创建时间不一致,该时间为excel的文件,第一次生成的时间或者创建的时间,不随文件拷贝.另存为和传输而改变.excel文件创建时间,是excel文件在该系统中出现的时间,拷贝

Android调用shell命令时间系统时间的修改

============问题描述============ Android怎么调用shell命令来修改系统时间啊,用代码的 ============解决方案1============ Process process = Runtime.getRuntime().exec("su"); String datetime = "20131023.112800"; // 测试的设置的时间[时间格式 // yyyyMMdd.HHmmss] DataOutputStream os

VC++ 获取文件属性创建时间、修改时间和访问时间

转载:http://blog.sina.com.cn/s/blog_66bf8d8301014ikd.html WIN32_FIND_DATA结构 关于文件的全部属性信息,总计有以下以下9 种:文件的标题名.文件的属性(只读.存档,隐藏等).文件的创建时间.文件的最后访问时间.文件的最后修改时间.文件大小的高位双字.文件大小的低位双字.保留.保留.在这里只有文件标题名和文件的长度可以通过CFile类比较方便的获得,而对于其他几种属性的获取和设置就无能为力了. 在用findfirst()和find

python文件夹遍历,文件操作,获取文件修改创建时间

在Python中,文件操作主要来自os模块,主要方法如下: os.listdir(dirname):列出dirname下的目录和文件os.getcwd():获得当前工作目录os.curdir:返回当前目录('.')os.chdir(dirname):改变工作目录到dirname os.path.isdir(name):判断name是不是一个目录,name不是目录就返回falseos.path.isfile(name):判断name是不是一个文件,不存在name也返回falseos.path.ex