Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Identificare tipo automaticamente in ResultSet

    ciao!

    provo a spiegare quello che mi servirebbe.
    ho questa classe qui:
    codice:
    public class AnagConti {
    
        private int npu;
        private int codiceCliente;
        private int codiceTmp;
        private String tipoConto;
        private String ragSoc;
        private String breve;
        private String partIva;
        private String codFiscale;
        private String via;
        private String localita;
        private String cap;
        private String provincia;
        private String nazione;
        private String ie;
     
        // GETTER AND SETTER
      
    }
    poi eseguo una query e riempio un ArrayList:
    codice:
        public ArrayList<AnagConti> getByTipoConto(int days) throws ClassNotFoundException, SQLException, IOException {
            ArrayList<AnagConti> list = new ArrayList<>();
            ReadSql readSql = new ReadSql("anag_tipo_conto.txt");
            String header = readSql.getHeader();
            String query = readSql.getSql();
            Connection conn = DBManager.getInstance().getConnection();
            try (PreparedStatement pstmt = conn.prepareStatement(query)) {
                pstmt.setString(1, "1515");
                pstmt.setInt(2, days);
                ResultSet rs = pstmt.executeQuery();
                while (rs.next()) {
                    System.out.println(rs.getType());
                    AnagConti anagConti = new AnagConti();
                    anagConti.setNpu(rs.getInt("NPU"));
                    anagConti.setCodiceCliente(rs.getInt("CODCLIE"));
                    anagConti.setCodiceTmp(rs.getInt("TMP"));
                    anagConti.setTipoConto(rs.getString("TIPOCONTO"));
                    anagConti.setRagSoc(rs.getString("RAGSOC"));
                    anagConti.setBreve(rs.getString("BREVE"));
                    anagConti.setPartIva(rs.getString("PARTIVA"));
                    anagConti.setCodFiscale(rs.getString("CODFISCALE"));
                    anagConti.setVia(rs.getString("VIA"));
                    anagConti.setLocalita(rs.getString("LOCALITA"));
                    anagConti.setCap(rs.getString("CAP"));
                    anagConti.setProvincia(rs.getString("PROVINCIA"));
                    anagConti.setNazione(rs.getString("NAZIONE"));
                    anagConti.setIe(rs.getString("IE"));
                    list.add(anagConti);
                }
            }
            return list;
        }
    come vedete vado a leggere un file con questo dentro:
    codice:
    NPU, CODCLIE, TMP, TIPOCONTO, RAGSOC, BREVE, PARTIVA, CODFISCALE, VIA, 
    LOCALITA, CAP, PROVINCIA, NAZIONE, IE
    ---
    SELECT 
    ANAG_CONTI.NPU NPU, 
    SUBSTR(ANAG_CONTI.CONTO, 5) CODCLIE, 
    FN_B2B_TROVA_GEN_ATTR('XXL', ANAG_CONTI.NPU, 'CODICEWEB') TMP, 
    SUBSTR(ANAG_CONTI.CONTO, 1, 4) TIPOCONTO, 
    GEN_ANAG.RAGSOC RAGSOC, 
    GEN_ANAG.BREVE BREVE, 
    GEN_ANAG.PARTIVA PARTIVA, 
    GEN_ANAG.CODFISCALE CODFISCALE, 
    GEN_ANAG.VIA VIA, 
    GEN_ANAG.LOCALITA LOCALITA, 
    GEN_ANAG.CAP CAP, 
    GEN_ANAG.PROVINCIA PROVINCIA, 
    GEN_ANAG.NAZIONE NAZIONE, 
    PCO.XSMPCO_ITA_EST IE 
    FROM ANAG_CONTI 
    INNER JOIN GEN_ANAG ON GEN_ANAG.NPU = ANAG_CONTI.NPU 
    INNER JOIN XSMPCO PCO ON PCO.CONTO = ANAG_CONTI.CONTO 
    WHERE ANAG_CONTI.DITAGENDA = 'XXL' AND ANAG_CONTI.FVL = ' ' AND ANAG_CONTI.TIPOCONTO = 'CL' 
    AND PCO.UTENTE = 'XXL' AND PCO.TIPO = 'CL' AND PCO.LIVELLO = 4 AND PCO.ESERCIZIO = ? 
    AND ( 
    ANAG_CONTI.CONTO LIKE 'CL00%' OR ANAG_CONTI.CONTO LIKE 'CLAG%' OR ANAG_CONTI.CONTO LIKE 'CLDS%' OR 
    ANAG_CONTI.CONTO LIKE 'CLFD%' OR ANAG_CONTI.CONTO LIKE 'CLFR%' OR ANAG_CONTI.CONTO LIKE 'CLMT%' OR 
    ANAG_CONTI.CONTO LIKE 'CLST%' 
    ) 
    AND TO_CHAR(ANAG_CONTI.TSTP_MOD, 'YYYYMMDD') BETWEEN TO_CHAR(SYSDATE - ?, 'YYYYMMDD') AND TO_CHAR(SYSDATE, 'YYYYMMDD') 
    ORDER BY ANAG_CONTI.CONTO
    la seconda parte è la query.
    la prima parte la vorrei usare come "mapping", e vorrei usare le varie vocie al posto dei vari rs.getXXX.
    il problema è che non so come indicare quando è un getInt e quando un getString.
    l'unica soluzione che mi è venuta in mente è mettere tutto come String in AnagConti, ma non mi sembra corretto!
    qualche idea?

  2. #2
    uhm mi sono reso conto che in effetti il problema non è solo quello.
    ce ne sarebbero anche altri avendo usato un oggetto custom anzichè un semplice ArrayList<String>.

    per fare quello che voglio dovrei usare hibernate o simili, giusto?

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da fermat Visualizza il messaggio
    per fare quello che voglio dovrei usare hibernate o simili, giusto?
    Non è detto ... dipende. Dipende da quanto vuoi che sia generalizzato e da quanto codice vuoi scrivere (meglio dire: quanto sei disposto a scrivere) per realizzare "da zero" una infrastruttura che ti permetta di rendere la "mappatura" di una query verso classi "bean" il più generica e flessibile per quanto ti è necessario.

    E ci sono anche framework intermedi come iBATIS/MyBatis che sono una via di mezzo tra l'uso "puro"/base di JDBC e l'uso di un ORM completo come Hibernate.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Non è detto ... dipende. Dipende da quanto vuoi che sia generalizzato e da quanto codice vuoi scrivere (meglio dire: quanto sei disposto a scrivere) per realizzare "da zero" una infrastruttura che ti permetta di rendere la "mappatura" di una query verso classi "bean" il più generica e flessibile per quanto ti è necessario.

    E ci sono anche framework intermedi come iBATIS/MyBatis che sono una via di mezzo tra l'uso "puro"/base di JDBC e l'uso di un ORM completo come Hibernate.
    ciao andbin!
    si in effetti sto dando un'occhiata e potrebbe anche fare al caso mio.
    l'unica cosa che non ho capito è il supporto per oracle.
    io adesso per la connessione sto usando questo plugin:
    codice:
    <dependency>
                <groupId>com.oracle</groupId>
                <artifactId>ojdbc6</artifactId>
                <version>11.2.0.3</version>
            </dependency>
    e come driver ho impostato questo: oracle.jdbc.driver.OracleDriver

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da fermat Visualizza il messaggio
    si in effetti sto dando un'occhiata e potrebbe anche fare al caso mio.
    l'unica cosa che non ho capito è il supporto per oracle.
    iBATIS/MyBatis è indifferente al DB usato. Nel senso che puoi usare il DBMS che vuoi e chiaramente con il driver JDBC apposito come hai indicato. Il punto di forza di iBATIS/MyBatis è che si preoccupa lui del "mapping" dei dati dai/ai "bean" ma lascia completamente a TE la scrittura delle query SQL.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Quote Originariamente inviata da andbin Visualizza il messaggio
    iBATIS/MyBatis è indifferente al DB usato. Nel senso che puoi usare il DBMS che vuoi e chiaramente con il driver JDBC apposito come hai indicato. Il punto di forza di iBATIS/MyBatis è che si preoccupa lui del "mapping" dei dati dai/ai "bean" ma lascia completamente a TE la scrittura delle query SQL.
    quindi non dovrebbe essere troppo complicato aggiungerlo ad un progetto già in corso!
    me lo studio un pà e poi vedo.

    intanto grazie per la dritta!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.