Query dinamica in MySQL

0

Sto facendo un'applicazione web J2EE con Struts2, MyBatis e un database MySQL, quindi quello che voglio è consentire all'utente di essere libero di scegliere diversi parametri per eseguire una selezione a una tabella nel database.

Ad esempio, ho una tabella denominata SALES, quindi voglio che quell'utente sia in grado di selezionare diversi parametri in base a ciò di cui ha bisogno. Forse, vuole filtrare per date e il nome del dipendente, e poi vuole filtrare solo dal cliente e così via.

Devo mostrare tutti i dati necessari per filtrare dal lato client con Javascript oppure posso eseguire una query su più tabelle dopo che l'utente ha scelto i parametri? se è possibile, come dovrei scrivere la query con parametri che potrebbero essere presenti o no?

    
posta gyosida 30.06.2014 - 02:22
fonte

1 risposta

1

Se la tua tabella contiene una piccola quantità di dati (e conterrà sempre una piccola quantità), ovviamente puoi filtrare in JavaScript. Questo è vero, ad esempio, se si seleziona sempre dal DB solo una "pagina" di dati (LIMIT 10,20). Ma nella vera applicazione tu vuoi LIMIT e FILTER nello stesso tempo in cui l'utente vuole vedere i risultati filtrati ma solo 10 di essi contemporaneamente. Non vuole caricare 10 risultati e quindi filtrarli a 3. In questo modo utilizzerai quasi sempre il filtro sul lato server.

Se usi Mybatis leggi Dynamic SQL e The SQL Builder Class . È possibile leggere i parametri del filtro dalla richiesta HTTP e impostare i valori delle variabili da verificare con il metodo Mybatis Dynaimc SQL if . Naturalmente devi prima scrivere quel xml con if per qualsiasi condizione di filtro.

Ad esempio, se vuoi filtrare SALES di amount (> 100) e name (contiene "Goo"), puoi passare da JS alle opzioni del filtro in questo modo:

{
    "filterBy" : [
        { field: "amount", op: "gt" }
        { field: "name", op: "contains" }
    ]
}

Nel codice Java puoi leggere questo JSON per mappare (con Jackson per esempio) e assegnare valori alle variabili per l'espressione SQL dinamico MyBatis.

Non riesco a spiegarmi di più in quanto non sono esperto di Mybatis.

    
risposta data 30.06.2014 - 07:32
fonte

Leggi altre domande sui tag