2015-08-26 32 views
5

próbuję wykonać kwerendy SQL i postarać się o jego wartość w zmiennej całkowitej, ale dostaję błąd czasu kompilacji mówiącSposób queryForInt (String) jest niezdefiniowana dla danego typu JdbcTemplate

Sposób queryForInt (String) jest niezdefiniowana dla danego typu JdbcTemplate

Mój kod jest poprawny myślę, więc mam problem w moim pliku pOM.

mój plik 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> 

mój plik 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!"); 
    } 
} 

Odpowiedz

7

Sposób JdbcTemplate.queryForInt był deprecated wiosną 3.2.2 i było removed wiosną 4.2.0.

Tu jest rzeczywiście konflikt zależność w pom.xml: polegać na wiosennej wersji 4.1.0.RELEASE i 4.2.0.RELEASE (dla spring-jdbc). Maven rozwiązuje ten konflikt, używając wersji 4.2.0.RELEASE dla wszystkich zależności Spring, dlatego metoda queryForInt jest niedostępna.

Można:

Zalecam aktualizację, ponieważ nie jest dobrą praktyką, aby nadal używać przestarzałych interfejsów API.

Aby uzyskać więcej informacji, patrz this question.

+0

użyłem int count = jdbcTemplateObject.queryForObject (SQL1, Integer.class); – Labeo

1

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

Nie ma takiej metody w Spring JdbcTemplate.

Twój pom jest dobry, wystarczy sprawdzić, czy dostosowałeś JdbcTemplate do pewnych nadpisanych metod lub używasz niewłaściwej metody.

Możesz używać najnowszej metody

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, ...);