【问题标题】:How to get column/field names in OrmLite?如何在 OrmLite 中获取列/字段名称?
【发布时间】:2015-07-28 08:22:33
【问题描述】:

我通过常用注释定义表/字段名称,例如:

@DatabaseTable(tableName = "M")
public class Headers {
    //android requires primary key as _ID
    @DatabaseField(generatedId = true, columnName = "_ID", dataType = DataType.INTEGER_OBJ)
    private Integer id;

    @DatabaseField(
            columnName = "MM2",
            uniqueCombo = true,
            canBeNull = true, //null means root folder
            dataType = DataType.INTEGER_OBJ
    )
    private Integer parentId;
}

与此同时,在我的代码深处,我需要进行一些查询,例如:

QueryBuilder<Headers, Integer> qb = headersDao.queryBuilder();
qb.where().eq("_ID",  headerId); //_ID field name

这种代码看起来很难看,因为字段名称(在这种情况下为 _ID)是硬编码的(即使会被声明为 final static String

问题:这是正常的 OrmLite 编码习惯吗?我希望我可以使用一些小代码来代替硬编码的_ID 字段。 OrmLite 肯定“知道”所有字段名称。谁能帮帮我?

【问题讨论】:

    标签: android sqlite android-sqlite ormlite


    【解决方案1】:

    为字段名定义一个常量,比如

    private static final String FIELD_ID = "_ID";
    // Or make it public as Gray said into comment
    public static final String FIELD_ID = "_ID";
    

    并像使用它一样使用它

    //android requires primary key as _ID
    @DatabaseField(generatedId = true, columnName = FIELD_ID, dataType = DataType.INTEGER_OBJ)
    private Integer id;
    

    进入你的查询

    QueryBuilder<Headers, Integer> qb = headersDao.queryBuilder();
    qb.where().eq(FIELD_ID,  headerId); //_ID field name
    

    如果你看documentation

    他们也遵循同样的原则

    QueryBuilder<Account, String> qb = accountDao.queryBuilder();
    Where where = qb.where();
    // the name field must be equal to "foo"
    where.eq(Account.NAME_FIELD_NAME, "foo");
    // and
    where.and();
    // the password field must be equal to "_secret"
    where.eq(Account.PASSWORD_FIELD_NAME, "_secret");
    PreparedQuery<Account, String> preparedQuery = qb.prepareQuery();
    

    【讨论】:

    • 我怀疑您想将字段名称设为public,以便其他人可以引用它。
    • @Gray 嘿,gray 感谢您指出这一点。是的,他也可以将其公开(如果该变量也被课外使用)
    • 我希望有一个等效的映射器类,它具有表、列名列表
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-23
    相关资源
    最近更新 更多