这是我参与 8 月更文挑战的第 22 天,活动详情查看: 8月更文挑战
前言
之前的日志管理中利用Springboot中的AOP来记录用户操作,能够清楚的看出用户操作了哪些类,使用了哪些方法名,输入到函数中的参数值以及操作ip,但这些日志记录数据更适合有一定编程基础的人查看,而对于负责日志管理的用户来说,他可能只想要知道,哪些人做了哪些操作,做了什么样的操作。
目标
添加操作日志页面,能够展现操作日志记录包括操作人、操作模块、操作类型、操作描述和操作时间。
具体实现步骤
1. 在pom.xml中添加AOP依赖
<!-- aop依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
2. 数据库设计
OperationLog表设计如下:
3. pojo层
在pojo层new一个名为OperationLog的java文件。
package com.tjm.pojo;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
import lombok.Data;
import java.sql.Timestamp;
@AllArgsConstructor
@NoArgsConstructor
@Data
public class OperationLog {
int oper_id;
String oper_modul;
String oper_type;
String oper_desc;
String username;
Timestamp oper_creat_time;
}
4. service层
创建service接口文件以及接口实现类,代码如下:
(1)OperationLogService
package com.tjm.service;
import com.tjm.pojo.OperationLog;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public interface OperationLogService {
int insertOperLog(OperationLog operationLog);
List<OperationLog> queryLogList();
}
(2) OperationLogServiceImpl
package com.tjm.service;
import com.tjm.mapper.OperLogMapper;
import com.tjm.pojo.OperationLog;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service("OperationLogService")
public class OperationLogServiceImpl implements OperationLogService{
@Autowired
private OperLogMapper operLogMapper;
@Override
public int insertOperLog(OperationLog operationLog) {
return operLogMapper.insertOperLog(operationLog);
}
@Override
public List<OperationLog> queryLogList(){
return operLogMapper.queryLogList();
}
}
5. mapper层
OperLogMapper
package com.tjm.mapper;
import com.tjm.pojo.OperationLog;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
@Mapper
public interface OperLogMapper {
int insertOperLog(OperationLog operationLog);
List<OperationLog> queryLogList();
}
然后在resources/mapper下新建一个OperLogMapper.xml,代码如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.tjm.mapper.OperLogMapper">
<insert id="insertOperLog" parameterType="OperationLog" >
<selectKey keyProperty="oper_id" resultType="int" order="BEFORE">
select nvl(max("oper_id"),0)+1 from "OperationLog"
</selectKey>
insert into "OperationLog"("oper_id","oper_modul","oper_type","oper_desc","username","oper_creat_time")
values(#{oper_id},#{oper_modul},#{oper_type},#{oper_desc},#{username},#{oper_creat_time})
</insert>
<select id="queryLogList" resultType="OperationLog">
select * from "OperationLog" Order by "oper_id"
</select>
</mapper>