JdbcTemplate 类型未定义方法 queryForInt(String)
The method queryForInt(String) is undefined for the type JdbcTemplate
我正在尝试执行 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!" );
}
}
SpringJdbcTemplate中没有这个方法
所以,你的pom是好的,你只需要检查你是否自定义了JdbcTemplate来覆盖一些方法或者你使用了错误的方法。
您可能想使用最新的方法
queryForObject(sql, Integer.class, arg1, arg2, ...);
方法 JdbcTemplate.queryForInt
在 Spring 4.2.0 中是 deprecated in Spring 3.2.2 and it was removed。
您的 pom.xml
中实际上存在依赖冲突:您依赖 Spring 版本 4.1.0.RELEASE
和 4.2.0.RELEASE
(对于 spring-jdbc
)。 Maven 通过对所有 Spring 依赖项使用版本 4.2.0.RELEASE
来解决该冲突,因此这就是方法 queryForInt
不可用的原因。
你可以:
- 将所有依赖项降级到 Spring
4.1.0.RELEASE
- 升级到 Spring
4.2.0.RELEASE
并使用 queryForObject(String sql, Class<T> requiredType)
和 Integer.class
作为 requiredType
.
我建议您升级,因为继续使用已弃用的 API 不是一个好习惯。
有关详细信息,请参阅 this question。
我正在尝试执行 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!" );
}
}
SpringJdbcTemplate中没有这个方法
所以,你的pom是好的,你只需要检查你是否自定义了JdbcTemplate来覆盖一些方法或者你使用了错误的方法。
您可能想使用最新的方法
queryForObject(sql, Integer.class, arg1, arg2, ...);
方法 JdbcTemplate.queryForInt
在 Spring 4.2.0 中是 deprecated in Spring 3.2.2 and it was removed。
您的 pom.xml
中实际上存在依赖冲突:您依赖 Spring 版本 4.1.0.RELEASE
和 4.2.0.RELEASE
(对于 spring-jdbc
)。 Maven 通过对所有 Spring 依赖项使用版本 4.2.0.RELEASE
来解决该冲突,因此这就是方法 queryForInt
不可用的原因。
你可以:
- 将所有依赖项降级到 Spring
4.1.0.RELEASE
- 升级到 Spring
4.2.0.RELEASE
并使用queryForObject(String sql, Class<T> requiredType)
和Integer.class
作为requiredType
.
我建议您升级,因为继续使用已弃用的 API 不是一个好习惯。
有关详细信息,请参阅 this question。