找不到类SimpleJdbcTemplate


背景

想编译个web应用,原来spring-jdbc.jar用的是Spring 3.1,今天改成用Spring 4.3,报了这个错误。


现象

编译不通过,报错如下:

1
2
3
4
5
6
Error:(19, 44) java: 找不到符号
  符号:   类 SimpleJdbcTemplate
  位置: 程序包 org.springframework.jdbc.core.simple
Error:(17, 44) java: 找不到符号
  符号:   类 ParameterizedRowMapper
  位置: 程序包 org.springframework.jdbc.core.simple

原因

从Spring 3.1开始,JdbcTemplateNamedParameterJdbcTemplate提供了SimpleJdbcTemplate的功能。
SimpleJdbcTemplateSimpleJdbcDaoSupport被标记为过时,到Spring 4.3则被完全移除

注:org.springframework.jdbc.core.simple.ParameterizedRowMapper也已经被移除
至于是在哪个版本的时候被移除就不清楚了。


解决办法

思路


org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate
代替
org.springframework.jdbc.core.simple.SimpleJdbcTemplate. 用
org.springframework.jdbc.core.RowMapper
代替
org.springframework.jdbc.core.simple.ParameterizedRowMapper.

具体办法

问题来了,当有分散在多地的代码都使用了SimpleJdbcTemplate,如何快速地替换为NamedParameterJdbcTemplate
如果你对IDE非常熟悉,或许能很快全局替换,然而本人智商比较爪机,使用sed命令更合适点。

用*RowMapper*替换*ParameterizedRowMapper*

1
sudo sed -i 's/org.springframework.jdbc.core.simple.ParameterizedRowMapper/org.springframework.jdbc.core.RowMapper/g' `grep -rl 'org.springframework.jdbc.core.simple.ParameterizedRowMapper'`

用*NamedParameterJdbcTemplate*替换*SimpleJdbcTemplate*

1
sudo sed -i 's/org.springframework.jdbc.core.simple.SimpleJdbcTemplate/org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate/g' `grep -rl 'org.springframework.jdbc.core.simple.SimpleJdbcTemplate'`

说明

grep是查找命令,选项r表示级联查找,选项l表示输出包含目标的文件(不加l是输出匹配到的行)。
sed是编辑命令,选项i表示将更改写入文件(不加的话是只将更改输出到console)。

1
s/org.springframework.jdbc.core.simple.ParameterizedRowMapper/org.springframework.jdbc.core.RowMapper/g

↑是全局替换的意思。
另外,注意区别反引号和单引号哦。

找不到类SimpleJdbcTemplate ParameterizedRowMapper cannot be resolved的更多相关文章

  1. Oracle EBS Java Applet报错:找不到类

    Oracle EBS Home Page可以打开,但是无法打开EBS的Form,查看Java控制台,有错误报出. java控制台报错,如下: Java Plug-in 1.6.0_07 使用 JRE ...

  2. 错误:找不到类org.springframework.web.context.ContextLoaderListener

    严重: Error configuring application listener of class org.springframework.web.context.ContextLoaderLis ...

  3. .PHP后缀大写导致Linux下Composer找不到类

    在本地Windows写完一个Composer包,上传到Linux报错找不到类,纠结了一下午,最后发现是.PHP后缀大写导致的问题. mv Google2FA.PHP Google2FA.php

  4. RMIC命令提示找不到类的问题

    问题环境: RMI服务类已经写好. 目录结构: -- A ----- B -------- C ------------- RMIImpl.class RMIImpl.java : package B ...

  5. idea下使用Maven找不到类

    当我们配置好pom文件的时候,准备启动Tomcat,Tomcat缺报找不到类的错误.. 可是明明我们的pom文件是没有问题的,在web.xml中也是可以ctrl+鼠标左键把类找到-为啥就报这么一个错误 ...

  6. 解决Android studio生成H文件时报找不到类文件错误

    今天整理思路时觉得在native直接调用java的方法显示这个办法挺不错 于是就用到了生成H文件 可能我的编译环境和他们的不一样 网上的教程如下 javah -d ../jni com.jm.prom ...

  7. Java和Javac的使用时总提示找不到类模块的解决方案

    1.场景: 争对网上的很多文章中javac编译与java运行的文章,有很多不明确的地方,使得在合适时发现很多坑.这里给大家作下简介. 2.Javac的使用注意: javac -d ./ ./Insta ...

  8. eclipse中运行 main 方法报错,找不到类

    eclipse (maven 项目)中运行 main 方法报错,找不到类 ** 发现:在 eclipse中的 "Marker" 控制面板中 ,发现问题所在 只要删除 maven 仓 ...

  9. atitit。解决 No suitable Log constructor。。NoClassDefFoundError: org/apache/log4j/Category 找不到类的

    atitit.解决 No suitable Log constructor..NoClassDefFoundError: org/apache/log4j/Category 找不到类的 1. 深的层次 ...

随机推荐

  1. SSL、TLS中间人攻击

    生成私钥 生成一个ca.key私钥签名 然后用私钥生成一个伪造证书服务器的根证书 生成一个伪造证书服务器的根证书ca.crt 在攻击主机启动路由转发功能 或者echo 1 > /proc/sys ...

  2. metasploit framework(八):snmp扫描,暴力破解

    snmp扫描linux 设置相关参数,这里使用的默认字典,你可以自己制定字典. run 然后使用枚举模块 设置相关参数 run,详细的信息就枚举出来了 snmp扫描windows 先枚举用户 设置目标 ...

  3. artTemplate js模板引擎动态给html赋值

    html放到$("#area").append(html);之前,否则文档流获取不到#area <table width="90%" class=&quo ...

  4. java实现person类 override(重写) comparable接口

    具体题目如下: 定义一个Person类,包含姓名(name).身高(height).体重(weight),以及talk()方法,该方法的功能是,输出自己的身高和体重信息.Person类实现Compar ...

  5. 设置获取cookie,setCookie,getCookie

    设置cookie: function setCookie(name,value) { var Days = 30; var exp = new Date(); exp.setTime(exp.getT ...

  6. TOJ 4383 n % ( pow( p , 2) ) ===0

    传送门:http://acm.tzc.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=4383 描述 There is a ...

  7. 学习Auxre记录

    1.下载地址:https://www.axure.com.cn/3510/(可以免费试用30天) 2.视频教程:https://huke88.com/course/6455.html 3.文字教程:h ...

  8. Python: AES加密与解密

    起源: 视频下载,解析到一个网站时,发现其视频id是用AES加密过的,用的是https://code.google.com/archive/p/crypto-js/这个库.解密很简单的一句js代码: ...

  9. Practice 10

    通过关键字extends来创建一个类的子类.一个类通过关键字implements声明自己使用一个或者多个接口. settext是根据数组新建的pets[1]object来的,对其调用抽象方法talk, ...

  10. java 线程Thread 技术--1.5 Executor Executors,ThreadPool,Queue

    Executors : Executors ,就是一个线程工具类:大部分操作线程的方法,都可以在这个工具类中就行创建,执行,调用一些线程的方法: Executor : 用于执行和提交一个runnabl ...