我正在尝试执行一个 sql 查询并尝试在一个整数变量中获取它的值,但是我收到一个编译时错误提示
The method queryForInt(String) is undefined for the type JdbcTemplate
我认为我的代码是正确的,所以我的 pom 文件有问题。
我的 pom.xml 文件:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>sql</groupId>
<artifactId>sql</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>sql</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring.version>4.1.0.RELEASE</spring.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.2.0.RELEASE</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.9</version>
</dependency>
</dependencies>
</project>
我的 app.java 文件:
package sql.sql;
import java.sql.ResultSet;
import java.sql.SQLException;
//import org.springframework.jdbc.core;
import java.util.List;
import javax.sql.DataSource;
//import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate;
public class App
{
public static void main( String[] args )
{
//DataSource dataSource = null ;
ApplicationContext context =
new ClassPathXmlApplicationContext("web.xml");
DataSource obj = (DataSource) context.getBean("dataSource");
JdbcTemplate jdbcTemplateObject = new JdbcTemplate(obj);
String SQL1 = "select count(*) from issues";
int row1 = jdbcTemplateObject.queryForInt(SQL1);
System.out.println(row1);
System.out.println( "Hello World!" );
}
}
最佳答案
方法JdbcTemplate.queryForInt
是deprecated在 Spring 3.2.2 中是 removed在 Spring 4.2.0 中。
实际上你的pom.xml
中存在依赖冲突: 你依赖 Spring 版本 4.1.0.RELEASE
和 4.2.0.RELEASE
(对于 spring-jdbc
)。 Maven 通过使用版本 4.2.0.RELEASE
解决了这个冲突对于所有 Spring 依赖项,这就是方法 queryForInt
的原因不可用。
你可以:
- 降级到 Spring
4.1.0.RELEASE
对于你所有的依赖 - 升级到 Spring
4.2.0.RELEASE
并改用queryForObject(String sql, Class<T> requiredType)
与Integer.class
作为requiredType
.
我建议您升级,因为继续使用已弃用的 API 不是一个好习惯。
参见 this question了解更多信息。
关于java - JdbcTemplate 类型未定义方法 queryForInt(String),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32225444/