2015-10-20 62 views
2

我想projet_id的,我試過下面的代碼,但是代碼getJdbcTemplate添加actualEffort組,queryForObject顯示下劃線連我都導入的包稱爲使用的JdbcTemplate在Spring框架

import javax.sql.DataSource 

import org.springframework.jdbc.core.JdbcTemplate; 

編碼

public int findTotal(){ 
    String sql = "select sum(actual_effort) from task group by project_id"; 
    int total = getJdbcTemplate().queryForInt(sql); 
    return total; 
} 
+0

你有一個'getJdbcTemplate'方法?代碼是否工作?你有例外嗎?什麼是錯誤? –

+0

對不起,我沒有getJdbcTemplate方法我需要創建如果是的話告訴我如何 –

+0

你說'queryForObject'加下劃線,但你的代碼有'queryForInt'。 – Qwerky

回答

2

因爲它似乎你正在使用Spring,你可以使用類似:

public class YourClass { 

    @Autowired 
    DataSource dataSource; 

    JdbcTemplate jdbcTemplate; 

    public YourClass(){ 
     jdbcTemplate = new JdbcTemplate(dataSource); 
    } 

    public int findTotal(){ 
    String sql = "select sum(actual_effort) from task group by project_id"; 
    int total = jdbcTemplate.queryForInt(sql); 
    return total; 
    } 
} 

而在你的Spring配置,你必須創建dataSource豆與您的數據基本信息:

<bean id="dataSource" 
    class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName" value="XXXX.jdbc.Driver" /> 
    <property name="url" value="jdbc:XXXX /> 
    <property name="username" value="XXX" /> 
    <property name="password" value="XXX" /> 
</bean> 

編輯

在審查您的問題後,我不確定您是否有興趣使用彈簧jdbcTemplate設施,或者您只是想使用groovy進行查詢......如果您的情況是第二次而不是使用jdbcTemplate只需使用groovy.sql.Sql的常規設施這樣做,例如:

import groovy.sql.Sql; 

def db = { 
    url : 'jdbc:XXXXX', 
    username : 'XXX', 
    password : 'XXXX', 
    driver : 'XXXXXXX' 
} 

def sql = Sql.newInstance("${db.url}", "${db.username}", "${db.password}","${db.driver}") 

def result = sql.executeQuery('select sum(actual_effort) from task group by project_id') 
println (result.getInt('sum(actual_effort)')) 

希望這有助於

+0

沒有DataSource指定的錯誤是在application.properties I已經寫了這個配置編碼。 –

+0

@LokeshKumarGaurav對不起,我不明白你的評論,但我用另一種方式更新我的答案,我認爲它可能是有用的':)' – albciff

+1

你不應該創建一個'JdbcTemplate'只是因爲你需要一個,它是一個重物創造。創建一次並重用。 –

0

這可能有所幫助。

import javax.sql.DataSource; 
import org.springframework.jdbc.core.JdbcTemplate; 

public int findTotal(){ 
String sql = "select sum(actual_effort) from task group by project_id"; 
JdbcTemplate jdbcTemplate = new JdbcTemplate(); 

int total = jdbcTemplate.queryForInt(sql); 
return total; 
}