记录一下,配置greendao的采坑过程,网上很多教程,使用的方式也大不同,但是生成实体类的配置是一样的,更多的是在封装这一个太多方法了,配置起来每个人的方式不一,导致浪费了很多时间,都没有搞好,最后总结了一些,下面的干净的配置和测试过程 。不得不说比sqlite的原始配置过程简单很多,而且避免语法的正规的一些问题。当然greendao只是个框架,也是基于sqlite。
第一步,引用依赖库:
//greendao数据库
implementation 'org.greenrobot:greendao:3.2.2'
第二步,app-build.gradle添加
//greendao配置
greendao {
//数据库版本号,升级时进行修改
schemaVersion 1
//生成的DAO,DaoMaster和DaoSession的包名。
// 默认是实体的包名
daoPackage 'com.example.xxxxx.greendao_db'
//生成源文件的路径。默认源文件目录是在build目录中的(build/generated/source/greendao)
targetGenDir 'src/main/java'
}
第三步,创建一个实体类,添加相关的注解 ,以及自增id 的Long 的(正确)写法 ,long是不能自增的,会报错。
确定没问题之后,build 一下。就会自动生成相关的文件了。
第四步,在Application里初始化greendao数据库:
private static DaoSession mDaoSession;
第五步,编写一个封装的方法,方便使用增删改查,当然我这里只写了增加的,没有其他的。
public class RfidSqliteUtil {
/**
* DaoSession
*/
private static DaoSession mDaoSession;
/**
* 获取单例
*/
public static DaoSession getInstance() {
if (mDaoSession == null) {
mDaoSession = CliectApp.getmDaoSession();
}
return mDaoSession;
}
/**
* 查看数据库的所有数据
*/
public static List<Rfidcardtable> load_all() {
List<Rfidcardtable> rfidcardtableList = null;
try {
rfidcardtableList = getInstance().getRfidcardtableDao().queryBuilder().list();
} catch (Exception e) {
e.printStackTrace();
}
return rfidcardtableList;
}
/**
* 插入一条epc不相同的数据
*/
public static void instear_ordid(String epc, String rssi) {
List<Rfidcardtable> rfidcardtableList = null;
try {
rfidcardtableList = getInstance().getRfidcardtableDao().queryBuilder().where(RfidcardtableDao.Properties.Epc.eq(epc)).list();
if (rfidcardtableList.isEmpty()) {
getInstance().getRfidcardtableDao().insert(new Rfidcardtable(null, epc, rssi, "false", null));
} else {
ViseLog.i("找到相同的数据" + rfidcardtableList.get(0).getId());
Rfidcardtable rfidcardtable = new Rfidcardtable(rfidcardtableList.get(0).getId(), epc, rssi, "false", null);
getInstance().getRfidcardtableDao().update(rfidcardtable);
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 查看指定的epc
*/
public static List<Rfidcardtable> find_epc(String epc) {
List<Rfidcardtable> rfidcardtableList = null;
try {
rfidcardtableList = getInstance().getRfidcardtableDao().queryBuilder().where(RfidcardtableDao.Properties.Epc.eq(epc)).list();
} catch (Exception e) {
e.printStackTrace();
}
return rfidcardtableList;
}
/**
* 更新一条数据数据
*/
public static void updata_epc(Rfidcardtable rfidcardtable) {
try {
getInstance().getRfidcardtableDao().update(rfidcardtable);
ViseLog.i("更新了");
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 删除指定的数据
*/
public static void delete_epc(String epc) {
try {
getInstance().getRfidcardtableDao().queryBuilder().where(RfidcardtableDao.Properties.Epc.eq(epc)).buildDelete().executeDeleteWithoutDetachingEntities();
} catch (Exception e) {
e.printStackTrace();
}
}
}
这里是我调用增加数据 的方法
没有保存,就可以找到自己的文件,导出来
用数据库工具(Nacicat for SQLite)查看
当然我这边也是用另一种方式查看,但是这边要用(fanqiang)才行 ,打开谷歌浏览器输入:
1.配置依赖项:
//测试数据库查看
implementation'com.facebook.stetho:stetho:1.5.0'
implementation'com.facebook.stetho:stetho-okhttp3:1.5.0'
2.主Appcation,初始化:
Stetho.initializeWithDefaults(this);
3. 谷歌浏览器输入:
chrome://inspect/#devices
当前这里配置还有其他的问题,可以参考这边大佬的文章:
Chrome:inspect查看android数据库常用的几种配置方法、chrome://inspect调试工具离线包_合抱之木,生于毫末,九层之台,起于累土的博客-CSDN博客_离线开发者调试工具包
以及其他的更改查询删除的操作也可以参考一下文章的写法和使用:
Android实战——GreenDao3.2的使用,爱不释手_qq_36931648的博客-CSDN博客
我这边是只保存了两条数据。
还有其他greendao的操作,后续会慢慢的记录更新。