记录遇到的需求或问题

记录遇到的需求或问题



前言

项目结构是JPA+Mybatis+Jsp+数据库不固定。记录遇到的问题方便查找。


一、ApplicationContextAware与@PostConstruct冲突

2023-07-17
启动项目时调用@PostConstruct声明的方法,方法中使用了SpringContextUtil工具类,工具类中的applicationContext出现空指针。

解决:在@PostConstruct声明的类上添加注解@DependsOn(“springContextUtil”),如果套用多层Service放在了最下层,AService-》BService-》CService,注解放在了CService上。SpringContextUtil类上添加@Component,例如:
SpringContextUtil:
在这里插入图片描述
Service:
在这里插入图片描述

二、在nullSafeSet方法中获取到当前执行SQL的表名或类名

2023-07-18

方案一:
直接调用PreparedStatement的toString方法,可以得到SQL,截取一下就能获取表名。但是根据本人查到的资料这个与用到的数据库驱动有关,Oracle可能并不适用;

	String tableName = null;
        //MySQL与Postgresql可行,Oracle可能不行
        String sql = null;
        PreparedStatement delegatePreparedStatement = getDelegatePreparedStatement(ps);
        sql = delegatePreparedStatement.toString();
        if (sql.contains("insert into ")) {
   
            int tableNameStartIndex = sql.indexOf("insert into ") + "insert into ".length();
            int tableNameEndIndex = sql.indexOf("(", tableNameStartIndex);
            tableName = sql.substring(tableNameStartIndex, tableNameEndIndex).trim();
        } else if (sql.contains("update")) {
   
            int tableNameStartIndex = sql.indexOf("update") + "update".length();
            int tableNameEndIndex = sql.indexOf("set", tableNameStartIndex);
            ta
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值