2012-07-06 7 views
5

Sono novizio in Grails e ho un dubbio. Diciamo che ho il mio Datasource.groovy configurato per il database mysql. Tutto funziona perfettamente e la mia app Grails è in esecuzione.Come si ottiene l'istanza del database in Grails?

Nel controller, se voglio aggiungere/modificare il database che ho impostato in DataSource.groovy come posso farlo?

Anche in questo caso ho bisogno di fare qualcosa di simile in ogni controller:

def db = Sql.newInstance(
        'jdbc:mysql://*****', 
        'root', 
        '', 
        'com.mysql.jdbc.Driver' 
       ) 

al fine di ottenere l'istanza db che indico DataSource.groovy di file?

Ci sono buone pratiche per farlo?

risposta

5

Si dovrebbe essere in grado di fare questo (mi sento di raccomandare questo viene fatto in un servizio piuttosto che un controller, come farà i controller più pulito e si codice più facile da seguire)

import groovy.sql.Sql 

class DataSourceAccessingService { 
    def datasource 

    def runSomeQuery(String sql) { 
    def sql = new Sql(datasource) 
    ... 
    } 
} 
+1

Oh anche 'DataSource .groovy' può essere iniettato! È fantastico riguardo ai graal! – batman

Problemi correlati