ORMLite Select individual fields

I have a SQLite table (on Android) that has many fields, but some fields are repeated / denormalized. I would like to select a separate set of this data and use it as real objects.

Example

book table

title            summary        author
Little Johnny    A funny kid    Johnny Himself
Big Johnny       A funny adult  Johnny Himself

I would like to extract one author from this list ("Johnny Selfself") and expected that I could do this using ORMLite, and not manually using Java.

+5
source share
2 answers

I would like to select a separate set of this data and use it as real objects.

100%, , ORMLite distinct() QueryBuilder, , . , :

List<Book> results = booksDao.queryBuilder()
    .distinct().selectColumns("author").query();

Book author, id - . , :

GenericRawResults<String[]> rawResults =
    booksDao.queryRaw("SELECT DISTINCT author FROM books");
for (String[] resultColumns : rawResults) {
    String author = resultColumns[0];
    ...
}
+18

public class DbHelper<T> {
    private Class<T> c;
    private DatabaseHelper db;
    public DbHelper(Class<T> c) {
        this.c = c;
        db = DatabaseHelper.getInstance();
    }

public List<T> queryForBuilderDistinct(int offset, int limit, String ColumnsName,
       String orderName, boolean isAsc) {
    try {
        Dao<T, Integer> dao = db.getDao(c);
        QueryBuilder<T, Integer> queryBuilder = dao.queryBuilder();
        if (offset != 0) {
            queryBuilder.offset((long) offset);
        }
        if (limit != 0) {
            queryBuilder.limit((long) limit);
        }
        if (orderName != null) {
            queryBuilder.orderBy(orderName, isAsc);
        }
        queryBuilder.distinct().selectColumns(ColumnsName);
        return dao.query(queryBuilder.prepare());
    } catch (SQLException e) {
        LogUtil.e(TAG, "queryForBuilderDistinct", e);
    }
    return new ArrayList<T>();
}
0

All Articles