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!
java android activity kripon database sqlite
Commentami!