本程序代码是基于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. 创建切面类(关键类处理和插入对象的)
<