GsonのようにSQLiteを簡単に読み取る

2148 ワード

自分でSQLiteの中のデータを読み取ることを書いて、使うのはGsonのように簡単で、オープンソースのアドレス:https://github.com/Yeamy/SQLiteDataSet
一、素早い
まず、解析する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で繰り返し使用できます.