通过spring aop去拦截SqlMapClientTemplate下的方法,即可进行对所有执行sql的拦截,并进行操作。

package com.detain.system.aop;

import org.aspectj.lang.ProceedingJoinPoint;

import org.aspectj.lang.annotation.Around;

import org.aspectj.lang.annotation.Aspect;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Component;

import com.detain.system.service.SystemService;

@Component

@Aspect

public class OperationRecordLog {

@Autowired

private SystemService systemService;

@Around(value = "execution(* org.springframework.orm.ibatis.SqlMapClientTemplate.delete(..)) or execution(* org.springframework.orm.ibatis.SqlMapClientTemplate.insert(..)) or execution(* org.springframework.orm.ibatis.SqlMapClientTemplate.queryForList(..)) or execution(* org.springframework.orm.ibatis.SqlMapClientTemplate.queryForMap(..)) or execution(* org.springframework.orm.ibatis.SqlMapClientTemplate.queryForObject(..)) or execution(* org.springframework.orm.ibatis.SqlMapClientTemplate.queryWithRowHandler(..)) or execution(* org.springframework.orm.ibatis.SqlMapClientTemplate.update(..))")

public Object exec(ProceedingJoinPoint invocation) throws Throwable {

Object result = invocation.proceed();

Object[] args = invocation.getArgs();

if (args.length > 0) {

if (!args[0].toString().equals("system.saveSqlOperationRecord")) {

try {

if (args.length>1) {

systemService.saveSqlOperationRecord(args[0].toString(), args[1]);

} else {

systemService.saveSqlOperationRecord(args[0].toString(), "");

}

} catch (Exception e) {

e.printStackTrace();

}

}

}

return result;

}

}

ibatis 数据库获取不到 java_如何拦截ibatis中所有的执行sql,并记录进数据库相关推荐

  1. EF Core3.0+ 通过拦截器实现读写分离与SQL日志记录

    前言 本文主要是讲解EF Core3.0+ 通过拦截器实现读写分离与SQL日志记录 注意拦截器只有EF Core3.0+ 支持,2.1请考虑上下文工厂的形式实现. 说点题外话.. 一晃又大半年没更新技 ...

  2. 拦截器获取请求参数post_spring boot拦截器中获取request post请求中的参数

    最近有一个需要从拦截器中获取post请求的参数的需求,这里记录一下处理过程中出现的问题. 首先想到的就是request.getParameter(String )方法,但是这个方法只能在get请求中取 ...

  3. 前端获取不到后端在拦截器中设置的响应头

    前言: 最近后端在做验token时遇到一个问题,两个前端项目分别使用Vue和Angular.两个项目token产生和验签规则是一样的(流程:后端Java在拦截器中验token,如果验签成功刷新toke ...

  4. 华夏mysql新建数据库_华夏名网虚拟主机不通过phpMyAdmin,将.sql备份导入MySQL数据库的方法...

    将.SQL数据库备份文件导入MYSQL数据库 1.登录 "会员中心"->"产品管理"->"我的主机"->"管理& ...

  5. shell脚本mysql_Shell脚本中执行sql语句操作MySQL数据库的几个方法

    实验如下: [root@idb1 ~]# more /etc/issue CentOS release 6.5 (Final) Kernel \r on an \m mysql> show va ...

  6. 使用quartz实现任务动态设置,从数据库获取配置时间

    Spring + quartz 2.2.3    xml配置 xml文件 <?xml version="1.0" encoding="GBK"?> ...

  7. 怎么获取mysql的链接字符串_如何从数据库获取连接字符串

    小编典典 获取连接字符串的最简单方法是使用Visual Studio中的"服务器资源管理器"窗口(菜单 视图 , 服务器资源管理器 ),然后从该窗口连接到服务器. 然后,您可以在已 ...

  8. asp.net中ADO.NET连接SQL数据库代码和连接Access数据库代码

    连接SQL数据库方法: 一.建立连接          1.(使用System.Data.SqlClient) <1>  string strcon;         //声明连接字串   ...

  9. 从历史见证未来,Distributed SQL?云原生数据库? 多模型数据库?

    本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可. 本作品 (李兆龙 博文, 由 李兆龙 创作),由 李兆龙 确认,转载请注明版权. 回顾历史 自1970年 Codd ...

最新文章

  1. 领扣(LeetCode)最长公共前缀 个人题解
  2. 在Centos 7 上跑 vue 项目 以及 Vue 热更新失效
  3. vfp赋值超过7位出错_JDK1.7下的HashMap的源码分析
  4. java.awt.api_Java SE 11(18.9)中的API更新
  5. roobo机器人怎么唱歌_抖音文案怎么写?如何写出引发共鸣的标题文案?让作品上大热门...
  6. php面试题汇总一(基础篇附答案)
  7. java freemarker_Java: FreeMarker的配置和使用
  8. [BZOJ1492][NOI2007]货币兑换Cash(斜率优化+CDQ分治)
  9. 考场自动安排工具开发手记
  10. 系统分析师-论文 (论需求分析方法及应用)
  11. BPM管理系统解决方案
  12. 对东方财经个股资金流的爬取分析
  13. 手把手教你开发enc424j600+Lwip以太网-送全部源码
  14. Vue CLI3不兼容IE11打开空白报错SCRIPT1003: 缺少 ‘:‘
  15. 使用textCNN进行文本分类的原理
  16. 华师计算机在线作业答案,2016春季华师计算机基础在线作业答案
  17. DataView 构造
  18. 房屋中介信息管理平台
  19. MI8 build.prop 优化整理,代码,安卓9
  20. 塞尔达传说——黄昏公主的几个障碍

热门文章

  1. php mysql登陆页面完整代码_求助:PHP实现登陆注册的代码是什么啊(主要是数据库那块)?...
  2. Mybatis源码阅读(三):结果集映射3.3 —— 主键生成策略
  3. 6.第一个程序Hello World
  4. [转载] 一文彻底搞懂父类引用指向子类对象问题
  5. dbms_排名前50位的DBMS面试问答
  6. java多态和泛型_Java面向对象(二) 接口、多态和泛型
  7. mysql返回行数_如何计算MySQL查询返回的行数?
  8. 穿越迷宫c语言程序设计教程课后答案,实验二 迷宫实验.doc
  9. php语言冒泡法,PHP实现冒泡排序算法的案例
  10. 聚类分析在用户行为中的实例_用户关注行为数据分析过程详解-描述统计+聚类...