一、配置
1:工程的build.gradle
classpath'org.greenrobot:greendao-gradle-plugin:3.2.2'

2:项目的build.gradle
1) applyplugin:'org.greenrobot.greendao' // apply plugin

2)版本配置
android{
greendao {
schemaVersion1
}
}
- implementation'org.greenrobot:greendao:3.2.2'
dependencies{
implementation'org.greenrobot:greendao:3.2.2'
}
3:创建实体类

@Entity
@id 后面跟的是自增长的意思,如果需要自增加,设置成Long,调用People的时候,参数填写成Null就可以
@Generated 后面是自动生成的,不用管
这三个是必须要设置的
然后get,set
最后,项目

就会发现你的项目多了一个文件夹greendao命名的,里面内容不需要动

这时你的GreenDao就配置成功了
二、工具类
1、DBManager.java
package com.sf.sxjf.database;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import com.sf.sxjf.ui.task.bean.DaoMaster;
import com.sf.sxjf.ui.task.bean.DaoSession;
/**
* Author: yx
* Description: 数据库初始化类
*/
public class DBManager {
// 是否加密
public static final boolean ENCRYPTED = true;
private Context mContext;
private static final String DB_NAME = "sxjf.db";
private static DBManager mDBManager;
private static DaoMaster.DevOpenHelper mDevOpenHelper;
private static DaoMaster mDaoMaster;
private static DaoSession mDaoSession;
private DBManager(Context context) {
this.mContext = context;
// 初始化数据库信息
mDevOpenHelper = new DaoMaster.DevOpenHelper(context, DB_NAME);//db默认路径/data/data
getDaoMaster(context);
getDaoSession(context);
}
public static DBManager getInstance(Context context) {
if (null == mDBManager) {
synchronized (DBManager.class) {
if (null == mDBManager) {
mDBManager = new DBManager(context);
}
}
}
return mDBManager;
}
/**
* 获取可读数据库
*
* @param context
* @return
*/
public static SQLiteDatabase getReadableDatabase(Context context) {
if (null == mDevOpenHelper) {
getInstance(context);
}
return mDevOpenHelper.getReadableDatabase();
}
/**
* 获取可写数据库
*
* @param context
* @return
*/
public static SQLiteDatabase getWritableDatabase(Context context) {
if (null == mDevOpenHelper) {
getInstance(context);
}
return mDevOpenHelper.getWritableDatabase();
}
/**
* 获取DaoMaster
*
* @param context
* @return
*/
public static DaoMaster getDaoMaster(Context context) {
if (null == mDaoMaster) {
synchronized (DBManager.class) {
if (null == mDaoMaster) {
//更新数据库
mDaoMaster = new DaoMaster(getWritableDatabase(context));
}
}
}
return mDaoMaster;
}
/**
* 获取DaoSession
*
* @param context
* @return
*/
public static DaoSession getDaoSession(Context context) {
if (null == mDaoSession) {
synchronized (DBManager.class) {
mDaoSession = getDaoMaster(context).newSession();
}
}
return mDaoSession;
}
}
2、BeanDaoOpe.java
package com.sf.sxjf.database.dao;
import android.content.Context;
import com.sf.sxjf.database.DBManager;
import com.sf.sxjf.ui.task.bean.SendTask;
import com.sf.sxjf.ui.task.bean.SendTaskDao;
import org.greenrobot.greendao.query.QueryBuilder;
import java.util.List;
/**
* Author: yx
* Description: 实体操作类
*/
public class SendTaskDaoOpe {
/**
* 添加数据至数据库
*
* @param context
* @param sendTask
*/
public static void insertData(Context context, SendTask sendTask) {
DBManager.getDaoSession(context).getSendTaskDao().insert(sendTask);
}
/**
* 将实体列表通过事务添加至数据库
*
* @param context
* @param list
*/
public static void insertData(Context context, List<SendTask> list) {
if (null == list || list.size() <= 0) {
return;
}
DBManager.getDaoSession(context).getSendTaskDao().insertInTx(list);
}
/**
* 添加数据至数据库,如果存在,将原来的数据覆盖
* 内部代码判断了如果存在就update(entity);不存在就insert(entity);
*
* @param context
* @param sendTask
*/
public static void saveData(Context context, SendTask sendTask) {
DBManager.getDaoSession(context).getSendTaskDao().save(sendTask);
}
/**
* 将实体列表通过事务添加至数据库,如果存在,将原来的数据覆盖
* 内部代码判断了如果存在就update(entity);不存在就insert(entity);
* 根据主键判断
* @param context
* @param list
*/
public static void saveData(Context context, List<SendTask> list) {
if(null == list || list.size() <= 0) {
return;
}
DBManager.getDaoSession(context).getSendTaskDao().saveInTx(list);
}
/**
* 删除数据至数据库
*
* @param context
* @param sendTask 删除具体内容
*/
public static void deleteData(Context context, SendTask sendTask) {
DBManager.getDaoSession(context).getSendTaskDao().delete(sendTask);
}
/**
* 根据id删除数据至数据库
*
* @param context
* @param id 删除具体内容
*/
public static void deleteByKeyData(Context context, long id) {
DBManager.getDaoSession(context).getSendTaskDao().deleteByKey(id);
}
/**
* 删除全部数据
*
* @param context
*/
public static void deleteAllData(Context context) {
DBManager.getDaoSession(context).getSendTaskDao().deleteAll();
}
/**
* 更新数据库
*
* @param context
* @param sendTask
*/
public static void updateData(Context context, SendTask sendTask) {
DBManager.getDaoSession(context).getSendTaskDao().update(sendTask);
}
/**
* 查询所有数据
*
* @param context
* @return
*/
public static List<SendTask> queryAll(Context context) {
QueryBuilder<SendTask> builder = DBManager.getDaoSession(context).getSendTaskDao().queryBuilder();
return builder.build().list();
}
/**
* 根据id,其他的字段类似
*
* @param context
* @param masterWaybillNo
* @return
*/
public static List<SendTask> queryForMasterWaybillNo(Context context, String masterWaybillNo) {
QueryBuilder<SendTask> builder = DBManager.getDaoSession(context).getSendTaskDao().queryBuilder();
/**
* 返回当前id的数据集合,当然where(这里面可以有多组,做为条件);
* 这里build.list();与where(StudentDao.Properties.Id.eq(id)).list()结果是一样的;
* 在QueryBuilder类中list()方法return build().list();
*
*/
return builder.where(SendTaskDao.Properties.MasterWaybillNo.eq(masterWaybillNo)).list();
}
}
3、调用
1)存储
DBManager.getDaoSession(App.getContext()).getSendTaskDao().insertOrReplaceInTx(beanList);
2)查询
List<Bean> queryList = BeanDaoOpe.queryForMasterWaybillNo(App.getContext(), scanResult);
网友评论