1. 程式人生 > >ormlite資料庫的使用

ormlite資料庫的使用

目前android資料庫開發框架有:OrmLite,LitePal,greeenDao,SugerOrm。

最近使用ormLite寫了個小應用,現在來介紹下ormLite的用法:

1.一個數據庫對應一個LiteOrm的例項,首先要自定義一個實體類,要在JavaBean裡宣告物件間關係。

註解的基礎用法:

   @Table("test_model") 表名
    @PrimaryKey(AssignType.AUTO_INCREMENT) 主鍵自增長
    @PrimaryKey(AssignType.BY_MYSELF) 自己設定主鍵
    @Ignore 忽略該欄位,不存入資料庫
    @Column("login") 指定列名
    @Collate("NOCASE") 大小寫無關

@Ignore  標記Ignore,不會出現在資料庫中

   @Check("description NOT NULL")  //檢測條件:可以指定條件檢測
下面是實體類的例項:

@Table("step")
public class StepData {

    // 指定自增,每個物件需要有一個主鍵
    @PrimaryKey(AssignType.AUTO_INCREMENT)
    private int id;

    @Column("today")
    private String today;
    @Column("step")
    private String step;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getToday() {
        return today;
    }

    public void setToday(String today) {
        this.today = today;
    }

    public String getStep() {
        return step;
    }

    public void setStep(String step) {
        this.step = step;
    }

    @Override
    public String toString() {
        return "StepData{" +
                "id=" + id +
                ", today='" + today + '\'' +
                ", step='" + step + '\'' +
                '}';
    }
}

2.下面的工具類封裝了ormlite的基本操作。

           LiteOrm  liteOrm = LiteOrm.newCascadeInstance(_activity, DB_NAME);  //建立資料庫

            刪除,新增和查詢等具體操作可以參照一下工具類:

public class DbUtils {

    public static LiteOrm liteOrm;

    public static void createDb(Context _activity, String DB_NAME) {
        DB_NAME = DB_NAME + ".db";
        if (liteOrm == null) {
            liteOrm = LiteOrm.newCascadeInstance(_activity, DB_NAME);
            liteOrm.setDebugged(true);
        }
    }


    public static LiteOrm getLiteOrm() {
        return liteOrm;
    }

    /**
     * 插入一條記錄
     *
     * @param t
     */
    public static <T> void insert(T t) {
        liteOrm.save(t);
    }

    /**
     * 插入所有記錄
     *
     * @param list
     */
    public static <T> void insertAll(List<T> list) {
        liteOrm.save(list);
    }

    /**
     * 查詢所有
     *
     * @param cla
     * @return
     */
    public static <T> List<T> getQueryAll(Class<T> cla) {
        return liteOrm.query(cla);
    }

    /**
     * 查詢  某欄位 等於 Value的值
     *
     * @param cla
     * @param field
     * @param value
     * @return
     */
    public static <T> List<T> getQueryByWhere(Class<T> cla, String field, String[] value) {
        return liteOrm.<T>query(new QueryBuilder(cla).where(field + "=?", value));
    }

    /**
     * 查詢  某欄位 等於 Value的值  可以指定從1-20,就是分頁
     *
     * @param cla
     * @param field
     * @param value
     * @param start
     * @param length
     * @return
     */
    public static <T> List<T> getQueryByWhereLength(Class<T> cla, String field, String[] value, int start, int length) {
        return liteOrm.<T>query(new QueryBuilder(cla).where(field + "=?", value).limit(start, length));
    }

    /**
     * 刪除所有 某欄位等於 Vlaue的值
     * @param cla
     * @param field
     * @param value
     */
//        public static <T> void deleteWhere(Class<T> cla,String field,String [] value){
//            liteOrm.delete(cla, WhereBuilder.create().where(field + "=?", value));
//        }

    /**
     * 刪除所有
     *
     * @param cla
     */
    public static <T> void deleteAll(Class<T> cla) {
        liteOrm.deleteAll(cla);
    }

    /**
     * 刪除所有 某欄位等於 Vlaue的值
     *
     * @param cla
     * @param field
     * @param value
     */
    public static <T> int deleteWhere(Class<T> cla, String field, String[] value) {
        return liteOrm.delete(cla, new WhereBuilder(cla).where(field + "!=?", value));
    }

    /**
     * 僅在以存在時更新
     *
     * @param t
     */
    public static <T> void update(T t) {
        liteOrm.update(t, ConflictAlgorithm.Replace);
    }


    public static <T> void updateALL(List<T> list) {
        liteOrm.update(list);
    }

    public static void closeDb() {
        liteOrm.close();
    }

}