加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – Spring JdbcTemplate如何记录异常参数?

发布时间:2020-12-15 04:22:46 所属栏目:Java 来源:网络整理
导读:使用 Spring的JdbcTemplate,我一直在试图找出一种在DAO层中记录异常的简洁方法,但似乎无法弄明白.我想记录使用的SQL语句和参数. 例如,addStoreSql是参数化语句 public int addStore(Store store) { return jdbcTemplate.update(addStoreSql,store.getId(),st
使用 Spring的JdbcTemplate,我一直在试图找出一种在DAO层中记录异常的简洁方法,但似乎无法弄明白.我想记录使用的SQL语句和参数.

例如,addStoreSql是参数化语句

public int addStore(Store store) {
    return jdbcTemplate.update(addStoreSql,store.getId(),store.getName());        
}

我做的事……

public int addStore(Store store) {
    try{
        return jdbcTemplate.update(addStoreSql,store.getName());        
    } catch (DataAccessException ex) {
        logger.error("exception on deleting store - " + store.toString(),ex);
        throw ex;
    }
}

我的问题是,有没有办法在许多dao方法中编写任何清洁工具?可能在记录器级别或一些Spring库?或者这是最干净的方式(或者上面的代码甚至是坏的)?

我有多个基本相同的方法,接受一个对象,将字段传递给查询并返回结果.

解决方法

使用Spring执行此操作的难点在于,您希望从中获取此信息的JDBC对象不是由Spring管理的对象,而是由驱动程序创建的.所以Spring AOP不适用(不使用AspectJ).

如果您在DEBUG级别记录类别“org.springframework.jdbc.core.JdbcTemplate”并在TRACE级别记录“org.springframework.jdbc.core.StatementCreatorUtils”,则Spring可以单独为您提供查询和参数.

现有的库log4jdbc和p6spy实现了JDBC驱动程序的包装,以便生成带有插入参数的SQL语句. See this question.使用其中任何一个都应该是将jar添加到项目中,将jdbc url更改为指向包装器,并调整日志记录以获取所需的信息级别.

现有的日志记录代码不好,因为它是重复的cut-n-paste代码,并且会导致异常被多次记录.日志将更难阅读,并将更频繁地滚动.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读