ormlite資料庫的使用
阿新 • • 發佈:2018-12-31
目前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(); } }