Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Make it easy to deserialize data from SQLite database to java bean on Android.

License

Notifications You must be signed in to change notification settings

Yeamy/SQLiteDataSet

Repository files navigation

SQLiteDataSet

English | 中文

This project is a simple tools to deserialize SQLite data to Java Bean on Android.

For java Cursor also see SQLDataSet

implementation 'io.github.yeamy:sqlitedataset:1.2'

1. Annotation

public class Fruit {

    @DsColumn("Name")
    public String name;      // the column in database is "Name"

    public String fullName;  // the column in database can be "fullName" or "full_name"

    @DsIgnore
    public String count;     // ignore this field

    public FruitType type;   // the name of the column is the same as the field
    // regist as custom type (see DsAdapter)

    public Skin skin;        // this field no DsColumn treat as extra type
}

2. DsReader

Generally, using DsReader is an easy and fast way.

SQLiteDatabase db = ...;                            // the source
String sql = "SELECT ...";                          // the sql
Fruit apple = DsReader.read(db, sql, Fruit.class);  // read one
ArrayList<Fruit> list = r DsReader.readArray(stmt, sql, Fruit.class);

3. DsFieldReader

In order to deserialize custom field type, you may define a DsFieldReader.

SQLiteDatabase db = ...;                           // the data source

DsFieldReader<Skin> skinReader = new DsFieldReader<>() {

    /**
     * @param cursor query result dataSet
     * @param columnIndex column index in result dataet
     * @return field instance
     */
    Skin read(Cursor cursor, int columnIndex) throws ReflectiveOperationException {
        return new Skin(cursor.getString(columnIndex));
    }
};

// gobal
DsReader.register(Skin.class, skinReader);      // add custom type

Fruit f = reader.read(db, sql, Fruit.class);    // read

// instance
DsInsReader reader = DsReader.with(Skin.class, skinReader)
                             .with(Color.class, colorReader);

Fruit f = reader.read(db, sql, Fruit.class);    // read

4. DsObserver

If you want to do anything after the Bean read, you can implement DsObserver.class, and do it in onDsFinish().

public class Vegetables implements DsObserver {

    @DsColumn("Name")
    public String name;
    ...
    @Override
    public void onDsFinish(){}
}

5. Extra Field

Data come from same row of Cursor can deserialize into an extra field.

source table:

UserName Province CityName ...
Nike Guangdong Shantou ...
...

Usually, deserialize like this:

public class User {

    @DsColumn("UserName")
    public String name;

    @DsColumn("Province")
    public String province;

    @DsColumn("CityName")
    public String city;
    ...
}

to package province and city into same field location, see below:

public class User {

    @DsColumn("UserName")
    public String name;
    ...

    // NOTICE:must without annotion DsColumn, field name cannot as same sa column,
    // otherwise using DsAdapter instead
    public City location;
}

public class City {

    @DsColumn("Province")
    public String province;

    @DsColumn("CityName")
    public String city;
    ...
}

About

Make it easy to deserialize data from SQLite database to java bean on Android.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages