2013-01-17 11 views
5

Sto osservando varie librerie che possono essere utilizzate come motore di template nel mio progetto e in questo momento Apache Velocity sembra un buon candidato. Ho i seguenti dubbi in merito al suo utilizzo:Definizione delle query del database all'interno dei modelli Velocity

È possibile specificare una query di database SQL in un modello e utilizzare il valore di ritorno dei querys per riempire un parametro ?. Ho trovato il seguente esempio nel manuale d'uso Velocity:

Hello, 

#set($result = $query.criteria("name")) 
Your username is $result. 

Tuttavia la guida non spiega molto circa l'esecuzione di query SQL. È possibile definire una query SQL SELECT che restituisce un valore e assegna questo valore a una variabile nel modello? Mi chiedo se qualcosa come l'esempio qui sotto è possibile?

Hello, 

#set($result = $executeQuery("SELECT name FROM user")) 
Your username is $result. 

Sarei grato se potessi far luce su questo. Qualcuno abbastanza gentile da fornire un esempio o indicarmi un luogo in cui posso trovare ulteriore documentazione su questo?

risposta

0

Ciò che segue è per HQL (si può provare con altri utilizzando questo come esempio)

esempio Generale che mostrano come visualizzare i primi 5 risultati di una data query:

#set($hql = "<query here>") 
#set($results = $xwiki.searchDocuments($hql, 5, 0)) 
#foreach ($item in $results) 
* $item 
#end 

Gli esempi di seguito mostrerò varie query HQL che è possibile scrivere. semplice query

di visualizzare tutti i documenti che sono stati creati dall'utente XWiki.JohnDoe

#set($hql = "where doc.creator='XWiki.JohnDoe'") 

Additonal Info

si consiglia di guardare a questo link

+0

Grazie per la risposta.Qualche idea se posso eseguire una query SQL qui? Se possibile, dove devo configurare le credenziali del database e le informazioni sul connettore? So che posso recuperare i modelli dal database utilizzando DataSourceResourceLoader. Ma è possibile eseguire query SQL e ottenere valori all'interno del modello? Grazie in anticipo. –

+0

Questo è legato a XWiki, Velocity standalone di default non ha l'oggetto '$ xwiki'. –

2

Velocity è un motore molto leggero che utilizza il motore, ha una funzionalità minima. Funziona con le variabili interpolating definite (da te) in un contesto in un file modello. Per impostazione predefinita, il contesto è vuoto, il che significa che non ci sono variabili per il modello da utilizzare. Velocity non consente istanziare nuovi oggetti di classi personalizzate, tutto ciò che consente di utilizzare sia a corda e numero letterali, oltre a mappe e liste:

#set ($n = 5) 
#set ($s = 'Hello New World!') 
#set ($m = {'four' : 4, 'five' : $n}) 
#set ($a = ['x', 'y', 'z']) 

sei responsabile per la produzione di velocità "intelligente" popolando contesto con oggetti utili prima di interpolare. Come punto di partenza, è possibile utilizzare alcuni degli Velocity Tools. È possibile aggiungere i propri strumenti, come uno strumento SQL che consente di eseguire query. Oppure puoi usare uno higher level framework that uses velocity e che offre già un ricco set di strumenti disponibili nei modelli.

Quindi, per rispondere alla domanda, è possibile eseguire qualsiasi istruzione SQL desiderata, purché si aggiunga nel contesto un oggetto che può eseguire tali istruzioni. Dovresti leggere di più su come usare correttamente Velocity nel loro developer guide.

Problemi correlati