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!" );
    }
}

http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/jdbc/core/JdbcTemplate.html

SpringJdbcTemplate中没有这个方法

所以,你的pom是好的,你只需要检查你是否自定义了JdbcTemplate来覆盖一些方法或者你使用了错误的方法。

您可能想使用最新的方法

http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/jdbc/core/JdbcTemplate.html#queryForObject-java.lang.String-java.lang.Class-

 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.RELEASE4.2.0.RELEASE(对于 spring-jdbc)。 Maven 通过对所有 Spring 依赖项使用版本 4.2.0.RELEASE 来解决该冲突,因此这就是方法 queryForInt 不可用的原因。

你可以:

我建议您升级,因为继续使用已弃用的 API 不是一个好习惯。

有关详细信息,请参阅 this question