torna all'elenco degli elementi della sezione finders

# Elemento di catalogo: QueryDef

## Descrizione

Questa feature permette di modellare una query con costrutti analoghi a quelli messi a disposizione dal linguaggio SQL. L'elemento è utilizzato in congiunzione con il CustomFinder.

## Caratteristiche (features)

cod. | nome | descrizione
QRYDEF001 | table column in select clause | Tramite il costrutto QTableColumn (Query-Table-Column) è possibile restituire in output il valore di una colonna di una tabella tra quelle incluse nella clausola FROM della definizione della query. Poichè una tabella può essere referenziata più volte in una query (tramite il costrutto QTable (Query-Table) in questo caso è possibile specificare a quale tabella appartiene effettivamente la colonna da inviare in output
QRYDEF002 | calculated column in select clause | Tramite il costrutto QCalculatedColumn (Query-Calculated-Column) è possibile restituire in output in valore calcolato applicando una espressione SQL ad una o più colonne delle tabelle tra incluse nella clausola FROM della definizione della query. Per definire l'espressione è possibile scrivere in testo libero l'espressione stessa, con la possibilità di inserire segnaposto per le varie colonne (pattern: $n, con n da 1 a N, se N è il numero di colonne su cui si basa l'espressione)
QRYDEF003 | column alias in select clause | E' possibile associare un alias a ciascuna colonna referenziata nella clausola SELECT. Nel caso delle colonne calcolate tale impostazione è obbligatoria. La presenza o meno di un alias di colonna, unito alla presenza o meno di un alias di tabella comporterà differenti politiche di naming delle property java del DTO. Il nome sarà costiuito da due parti: `<partetabella><Partecolonna>`: ciascuna delle due parti è valorizzata con il valore dell'attributo name se non è impostato l'alias, o con il valore dell'alias altrimenti.
QRYDEF004 | multiple table in from clause | Tramite il costrutto QTable (Query-Table) è possibile includere nella costruzione della query più tabelle. Una volta incluse nella clausola FROM sarà possibile referenziare le singole tabelle nel resto della query
QRYDEF005 | table alias in from clause | E' possibile impostare un alias di tabella nella clausola FROM. Questo permette di referenziare più volte la stessa tabelle (per tutte le casistiche che richiedono questa situazione nel linguaggio SQL - es. join, relazioni multiple verso la stessa tabella, ...).
QRYDEF006 | equality join clause | E' possibile specificare una o più condizioni di join con condizione di uguaglianza tra due colonne di due tabelle incluse nella clausola FROM.
QRYDEF0067 | custom where clause | E' possibile definire la clausola WHERE descrivendo (in testo libero) l'espressione SQL di filtro. Questa espressione sarà aggiunta in AND ad una eventuale espressione derivante dall'insieme delle clausole di JOIN eventualmente presenti. L'espressione può contenere segnaposto nel formato `:parametro`. Tali segnaposto devoo essere valorizzati nella porzione di codice manuale scritta nel metodo corrispondente al CustomFinder.
QRYDEF008 | complex result DTO | A fronte della presenza di un elemento QueryDef in un CustomFinder il metodo restituisce un DTO specifico costruito con tante property quante sono le colonne (reali o calcolate) incluse nella clausola SELECT. Il nome delle singole property dipende: dal name delle tabelle dal name delle colonne da eventuali alias di colonna o tabella

## Grado di implementazione delle varie caratteristiche

Nella tabella seguente è riportato il grado di implementazione delle varie caratteristiche/funzioni dell'elemento QueryDef nelle differenti implementazioni.

cod | feature | datagen
--- | --- | ---
2.0.0
standard
QRYDEF001 | table column in select clause |
QRYDEF002 | calculated column in select clause |
QRYDEF003 | column alias in select clause |
QRYDEF004 | multiple table in from clause |
QRYDEF005 | table alias in from clause |
QRYDEF006 | equality join clause |
QRYDEF0067 | custom where clause |
QRYDEF008 | complex result DTO |