Lite-Orm數據庫

1. 初步認識

官方GitHub庫地址

自動化且比系統自帶數據庫操作快1倍!

LiteOrm是android上的一款數據庫(ORM)框架庫。速度快、體積小、性能高。開發者基本一行代碼實現數據庫的增刪改查操作,以及實體關係的持久化和自動映射。


2.導入orm相關jar包

jar包可以在上面的官網例子裏面找到
下面講講如何在項目中添加jar
1.將jar複製到自己的項目文件夾下,如下圖:

選中lib-orm-1.9.2jar,然後右鍵,在列表中選擇add as librrary.... 即可


3.建表

在任意一個類下面添加這句話即可;

@PrimaryKey(AssignType.AUTO_INCREMENT)
private int primary_id;

比如:我自己寫的這個類

其實還有其他的註解,但是大家一般也都是常用的居多,就不介紹那麼多了。


4.使用

首先寫一個數據庫幫助類:【我自己寫了一個,要是嫌麻煩的話,可以直接用我的也行】

package com.anrongplcae.utils;

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

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 "行業場所_DB";
	}

	/**
	 * 創建級聯數據庫
	 *
	 * @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 = mContext.getApplicationContext();
			}
			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) {
		// liteOrm.delete(cla, WhereBuilder.create().where(field + "=?",
		// 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();
		}
	}

}

然後是初始化:把下面的這段代碼放到你自己的Application中,在OnCreate中引用這個方法就可以了。

/**
 * 初始化數據庫
 */
private void initOrmLite() {
    boolean cascadeDB = LiteOrmDBUtil.createCascadeDB(this);
    if (cascadeDB) {
       LogUtil.d("創建數據庫成功");
    }
}

最後就是使用了,使用的話,超級簡單的:

PerPhotoInfo ppif = new PerPhotoInfo();

ppif.setSex("");

ppif.setGmsfhm("");

LiteOrmDBUtil.insert(ppif);

5.最後

 

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