Android數據庫LiteOrm的使用

1.介紹

LiteOrm 是一個數據庫 ORM 框架,自動化存儲實體和處理關係映射,比系統自帶API速度 「 快1倍」!

LiteOrm 是一個速度快、小巧卻強大的 Android ORM 框架類庫,速度快、體積小、性能高,開發者基本一行代碼實現數據庫的增刪改查操作,以及實體關係的持久化和自動映射。 自動化且比系統自帶數據庫操作快1倍!

有興趣的人可以去看看他的其他項目。
https://litesuits.com/?form=gorm
另外推薦兩篇詳細版的使用博客
http://blog.csdn.net/u014099894/article/details/51586500
http://www.jianshu.com/p/0d72226ef434 

 

2.接入

首先,從他的GitHub庫地址上下載LiteOrm的jar包,複製到libs目錄。 
然後在項目結構裏面,選擇添加jar包爲依賴,找到我們複製進去的jar包,按確定即可。

3.基本使用

1.數據庫工具類

package com.anrongcheck.db;

import android.annotation.SuppressLint;
import android.content.Context;

import com.anrongcheck.JLApp;
import com.anrongcheck.util.LogUtil;
import com.litesuits.orm.LiteOrm;
import com.litesuits.orm.db.assit.QueryBuilder;
import com.litesuits.orm.db.assit.WhereBuilder;
import com.litesuits.orm.db.model.ColumnsValue;
import com.litesuits.orm.db.model.ConflictAlgorithm;

import java.util.Collection;
import java.util.List;

/**
 * 數據庫工具類
 *
 * @author mazhanzhu
 */
public class LiteOrmDBUtil {

    public static String DB_NAME;
    private static LiteOrm liteOrm;
    public static Context mContext;

    /**
     * 數據庫名稱
     *
     * @return
     */
    private static String getUserDatabaseName() {
        return "ocall_info";
    }

    /**
     * 創建級聯數據庫
     *
     * @param context
     */
    public static boolean createCascadeDB(Context context) {
        mContext = context.getApplicationContext();
        DB_NAME = getUserDatabaseName();
        liteOrm = LiteOrm.newCascadeInstance(mContext, DB_NAME);
        liteOrm.setDebugged(LogUtil.isDebuggable());
        return true;
    }

    public static LiteOrm getLiteOrm() {
        if (liteOrm == null) {
            if (mContext == null) {
                mContext = JLApp.getContext();
            }
            DB_NAME = getUserDatabaseName();
            liteOrm = LiteOrm.newCascadeInstance(mContext, DB_NAME);
            liteOrm.setDebugged(LogUtil.isDebuggable());
        }
        return liteOrm;
    }

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

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

    /**
     * 以某種條件作爲插入標準
     *
     * @param
     * @return
     */
    public static <T> long insertAll(Collection<T> t, ConflictAlgorithm config) {
        return getLiteOrm().insert(t, config);
    }

    /**
     * 以某種條件作爲插入標準
     *
     * @param
     * @return
     */
    public static <T> long insertAll(List<T> t, ConflictAlgorithm config) {
        return getLiteOrm().insert(t, config);
    }


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

    /**
     * 根據ID查詢
     *
     * @param cla
     * @return
     */
    public static <T> T getInfoById(String id, Class<T> cla) {
        return getLiteOrm().queryById(id, cla);
    }

    /**
     * 根據ID查詢
     *
     * @param cla
     * @return
     */
    public static <T> T getInfoById(long id, Class<T> cla) {
        return getLiteOrm().queryById(id, cla);
    }

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

    /**
     * 模糊查詢
     *
     * @param cla
     * @param field
     * @param value
     * @param <T>
     * @return
     */
    public static <T> List<T> getQueryByTime(Class<T> cla, String field, Object[] value) {
        return getLiteOrm().<T>query(new QueryBuilder(cla).where(field + " LIKE ?", 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 getLiteOrm().<T>query(new QueryBuilder(cla).where(field + "=?", value).limit(start, length));
    }

    /**
     * 刪除所有 某字段等於 Vlaue的值
     *
     * @param cla
     * @param field
     * @param value
     */
    @SuppressWarnings("deprecation")
    public static <T> int deleteWhere(Class<T> cla, String field, String[] value) {
        return getLiteOrm().delete(cla, WhereBuilder.create(cla, field + "=?", value));
    }

    /**
     * 刪除所有 某字段等於 Vlaue的值
     *
     * @param cla
     * @param field
     * @param value
     */
    public static <T> int deleteWhere(Class<T> cla, String field, Object[] value) {
        return getLiteOrm().delete(cla, WhereBuilder.create(cla, field + "=?", value));
    }

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

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

    /**
     * 以某種條件來整體更新
     *
     * @param list
     * @param config
     * @return
     */
    public static <T> int updateAll(List<T> list, ConflictAlgorithm config) {
        return getLiteOrm().update(list, config);
    }

    public static <T> int updateALL(List<T> list) {
        return getLiteOrm().update(list);
    }

    public static <T> void update(Class<T> cla, String queryCol,
                                  String queryValue, String updateCol, String updateValue) {
        getLiteOrm().update(
                new WhereBuilder(cla).where(queryCol + " = ?",
                        new String[]{queryValue}),
                new ColumnsValue(new String[]{updateCol},
                        new Object[]{updateValue}), ConflictAlgorithm.None);

    }

    @SuppressLint("NewApi")
    public void closeDB() {
        if (liteOrm != null) {
            liteOrm.close();
        }
    }
}

如果整個app只有一個數據庫,建議保持單例,不然可能會出問題。

2.建立一個類

一開始我不明白啥意思,後來發現,這就是你要保存的那個類,只是要加入一個自增長的id以及一些註解就行。我這裏就做了個簡單的類,get和set之類的就不寫進來了。。

public class PerPhotoInfo implements Parcelable {

	@PrimaryKey(AssignType.AUTO_INCREMENT)
	private int primary_id;

	private String id;
	private String gmsfhm;// 人員身份證號
	private String xp;// 照片
	private String sex;//性別
	private String nation;//名族
	private String birthday;//出生日期
	private String address;//地址
	private String hc_address;//覈查地址
	private String name;//覈查地址
	private String hc_time;//覈查時間
......}

4.總結

好像沒啥好說的,估計大多數人用的都還是一些比較基礎的功能,這個庫其實能做很多事情,聯級操作之類的;慢慢用着就會很熟練了。祝大家生活愉快~~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章