Spring AOP控制日志管理对修改字段比较提取插入

本程序代码是基于ssh的

 

1 。 基于接口编程创建一个日志接口

package com.osnt.dao.recordLog;

import java.io.Serializable;
import com.osnt.dao.BaseDAO;//这里面包含了很多操作数据库的方法比如update,insert,select,delete
import com.osnt.entity.RecordLog;


public interface IRecordLog extends BaseDAO<RecordLog, Serializable> {
	//不需要任何方法,除非用户有自定的实现方法,BaseDao 里面已经包含公共的方法
}

2.  我们拦截最底层的方法这里需要编写一个注解类

package com.osnt.dao.recordLog;

import java.lang.annotation.Documented;   
import java.lang.annotation.ElementType;   
import java.lang.annotation.Retention;   
import java.lang.annotation.RetentionPolicy;   
import java.lang.annotation.Target;

@Target({ElementType.METHOD})   
@Retention(RetentionPolicy.RUNTIME)   
@Documented 
public @interface RecordLogAnnotation {
	public String desc() default "not desc";//通过这里我们调用方法的时候就能确定是什么操作
}

3. 创建日志实体对象

package com.osnt.entity;

import java.sql.Timestamp;

public class RecordLog  implements java.io.Serializable {


    // Fields 以下字段应该很好理解吧   
     @javax.persistence.Id()
     private String logId;
     private String logUserId;
     private String logUserName;
     private String logModuleName;// 功能模块名称我是通过属性文件提取的
     private Long logFlag;
     private String logDesc;
     private Timestamp logCreateTime;
     private String logNewComparyOld; //这里是存放更改或者删除后保存的原始数据和对比数据
     
     public static final long LOG_FLAG_SUCCESS = 0;
     public static final long LOG_FLAG_ERROR = 1;
     
     public Timestamp getLogCreateTime() {
		return logCreateTime;
	}

	public void setLogCreateTime(Timestamp logCreateTime) {
		this.logCreateTime = logCreateTime;
	}

	public String getLogNewComparyOld() {
		return logNewComparyOld;
	}

	public void setLogNewComparyOld(String logNewComparyOld) {
		this.logNewComparyOld = logNewComparyOld;
	}

    // Constructors
	/** default constructor */
	public RecordLog() {
	}
    
    /** full constructor */
    public RecordLog(String logUserId, String logUserName, String logModuleName, Long logFlag, String logDesc) {
        this.logUserId = logUserId;
        this.logUserName = logUserName;
        this.logModuleName = logModuleName;
        this.logFlag = logFlag;
        this.logDesc = logDesc;
    }

   

    public String getLogId() {
		return logId;
	}

   public void setLogId(String logId) {
		this.logId = logId;
	}

    public String getLogUserId() {
        return this.logUserId;
    }
    
    public void setLogUserId(String logUserId) {
        this.logUserId = logUserId;
    }

    public String getLogUserName() {
        return this.logUserName;
    }
    
    public void setLogUserName(String logUserName) {
        this.logUserName = logUserName;
    }

    public String getLogModuleName() {
        return this.logModuleName;
    }
    
    public void setLogModuleName(String logModuleName) {
        this.logModuleName = logModuleName;
    }

    public Long getLogFlag() {
        return this.logFlag;
    }
    
    public void setLogFlag(Long logFlag) {
        this.logFlag = logFlag;
    }

    public String getLogDesc() {
        return this.logDesc;
    }
    
    public void setLogDesc(String logDesc) {
        this.logDesc = logDesc;
    }
}

4.创建RecordLog.hbm.xml

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="com.osnt.entity">
    <class name="RecordLog" table="record_log">
        <id name="logId" type="java.lang.String">
            <column name="log_id" length="36" />
            <generator class="uuid" />
        </id>
        <property name="logUserId" type="java.lang.String">
            <column name="log_user_id">
                <comment>用户ID</comment>
            </column>
        </property>
        <property name="logUserName" type="java.lang.String">
            <column name="log_user_name">
                <comment>用户名称</comment>
            </column>
        </property>
        <property name="logModuleName" type="java.lang.String">
            <column name="log_module_name">
                <comment>模块名称</comment>
            </column>
        </property>
        <property name="logFlag" type="java.lang.Long">
            <column name="log_flag">
                <comment>是否成功标记</comment>
            </column>
        </property>
        <property name="logDesc" type="java.lang.String">
            <column name="log_desc">
                <comment>描述信息</comment>
            </column>
        </property>
        <property name="logNewComparyOld" type="java.lang.String">
            <column name="log_new_compary_old">
                <comment>数据对比描述</comment>
            </column>
        </property>
        <property name="logCreateTime" type="java.sql.Timestamp">
            <column name="log_createtime">
                <comment>创建时间</comment>
            </column>
        </property>
    </class>
</hibernate-mapping>


5. 创建切面类(关键类处理和插入对象的)

 <

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值