GsonのようにSQLiteを簡単に読み取る
2148 ワード
自分でSQLiteの中のデータを読み取ることを書いて、使うのはGsonのように簡単で、オープンソースのアドレス:https://github.com/Yeamy/SQLiteDataSet
一、素早い
まず、解析するBeanクラスを作成します.
解析コードは次のとおりです.
これはまだ終わっていません.もっと高級な遊び方をして、次を見てください.
二、複数の列を一つのメンバー変数にパッケージする
複数のカラムを1つのメンバー変数にパッケージ化するには、Beanクラスを変更するだけです.
OK、これで終わりだ
三、カスタムタイプ
カスタムタイプのメンバー変数を解析するには、DsFactoryを作成し、DsAdapterと連携して使用する必要があります.
tips:DsFactoryはBeanクラスのメンバー変数を読み込み、メンバー変数はcursorで対応する列が見つからない場合は解析せず、factoryは複数のcursorで繰り返し使用できます.
一、素早い
まず、解析するBeanクラスを作成します.
public class Fruit {
@DsIgnore
public String count; //
public int color; //
@DsColumn("FruitName")
public String name; // , DsColumn
}
解析コードは次のとおりです.
SQLiteDatabase db = ...; //
String sql = ...; // SQL
Fruit apple = DsReader.read(db, sql, Fruit.class); //
ArrayList list = DsReader.readArray(db, sql, Fruit.class);//
これはまだ終わっていません.もっと高級な遊び方をして、次を見てください.
二、複数の列を一つのメンバー変数にパッケージする
複数のカラムを1つのメンバー変数にパッケージ化するには、Beanクラスを変更するだけです.
public class Fruit {
...
public Skin skin; // , DsColumn DsIgnore
}
public class Skin {
public int color;
public String image;
}
OK、これで終わりだ
三、カスタムタイプ
カスタムタイプのメンバー変数を解析するには、DsFactoryを作成し、DsAdapterと連携して使用する必要があります.
public class Fruit {
...
public FruitType type;
}
DsAdapter adapter = new DsAdapter() {
/**
* @param t
* , ,
* @param field
* , field.getName()
* @param cursor
*
* @param columnIndex
* rs
*/
@Override
public void read(Object t, Field field, Cursor cursor, int columnIndex)
throws InstantiationException, IllegalAccessException {
FruitType type = new FruitType(....);
// field.set(t, type);
Fruit f = (Fruit) t;
f.type = type;
}
};
DsFactory factory = new DsFactory(Fruit.class); //
factory.addAdapter(FruitType.class, adapter); //
Fruit apple = factory.read(cursor); //
factory.readArray(list, cursor); //
tips:DsFactoryはBeanクラスのメンバー変数を読み込み、メンバー変数はcursorで対応する列が見つからない場合は解析せず、factoryは複数のcursorで繰り返し使用できます.