Lite-Orm数据库

  • Post author:
  • Post category:其他


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.最后



版权声明:本文为fengyeNom1原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。