Persistenza su database SQLite in Android con Kripton

Persistenza su database SQLite in Android con Kripton

Su Android è possibile salvare i dati in diverse maniere:

  • persistenza su file system
  • database
  • shared preference

Oggi vediamo la prima modalità usando la libreria Kripton, disponibile sia per Kotlin che per Java (quello che useremo noi).

Oggi vediamo la seconda modalità, usando SQLite come database.

Prima di tutto aggiungete questo permesso al manifest:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

E poi queste dipendenze in gradle:

dependencies {
    ............................
    annotationProcessor "com.abubusoft:kripton-processor:5.0.0"
    implementation "com.abubusoft:kripton-android-library:5.0.0"
}

Questa la nostra classe POJO:

package com.mattepuffo.www.test;

import com.abubusoft.kripton.android.annotation.BindSqlType;

@BindSqlType(name = "persone")
public class Persona {
    public long id;
    public String nome;
}

Adesso create una interfaccia che conterrà le definizioni dei vari metodi:

import com.abubusoft.kripton.android.annotation.BindDao;
import com.abubusoft.kripton.android.annotation.BindSqlInsert;
import com.abubusoft.kripton.android.annotation.BindSqlParam;
import com.abubusoft.kripton.android.annotation.BindSqlSelect;

import java.util.List;

@BindDao(Persona.class)
public interface PersonaDAO {

    @BindSqlSelect(orderBy = "nome")
    List<Persona> selectAll();

    @BindSqlSelect(jql = "SELECT * FROM persona ORDER BY id")
    List<Persona> selectOrderId();

    @BindSqlSelect(where = "id=${p.id}")
    List<Persona> selectById(@BindSqlParam("p") Persona bean);

    @BindSqlInsert
    void insert(Persona bean);
}

Come vedete possiamo sia creare delle query personalizzate, che usare gli strumenti della libreria.

Adesso create un'altra interfaccia per il data source:

import com.abubusoft.kripton.android.annotation.BindDataSource;

@BindDataSource(daoSet = {PersonaDAO.class}, fileName = "persone.db", log = true)
public interface PersonaDataSource {
}

Lasciatela vuota come la vedete.

Prima di continuare, però, è importante che compiliate il progetto; questo perchè le annotazioni della libreria creeranno per noi il codice che implementa il data source.

Dopo la compilazione, nella nostra Activity:

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import com.abubusoft.kripton.android.KriptonLibrary;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        KriptonLibrary.init(getApplicationContext());
        try (BindPersonaDataSource dataSource = BindPersonaDataSource.open()) {
            PersonaDAOImpl impl = dataSource.getPersonaDAO();

            Persona p1 = new Persona();
            p1.id = 1;
            p1.nome = "FRANCO";

            Persona p2 = new Persona();
            p2.id = 2;
            p2.nome = "GINO";

            impl.insert(p1);
            impl.insert(p2);

            List<Persona> list = impl.selectAll();
            for (Persona p : list) {
                System.out.println(p.nome);
            }
        }

    }

}

Questo codice inserice due records, e poi itera sulla tabella.

Enjoy!




Share

Commentami!

About Mattepuffo.com

Blog dedicato all'informatica e alla programmazione!
Tutti i contenuti di questo blog, tranne casi particolari, sono sotto licenza Licenza Creative Commons Creative Commons Attribution-Noncommercial-Share Alike 2.5. .

2664 articoli
310 commenti
19 progetti
Altri link
  • About
  • Scrivimi
  • Copyright
  • Sitemap
  • matteo.ferrone@yahoo.it
  • GitHub
  • Privacy Policy