优势:
1.存取速度快;
2.支持数据库加密;
3.轻量级;
4.激活实体;
5.支持缓存;
6.代码自动生成;
导入依赖:
项目中:
buildscript {
repositories {
google()
jcenter()
mavenCentral() // add repository
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.0'
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2'
}
}
app中:
apply plugin: 'org.greenrobot.greendao' // apply plugin
implementation 'org.greenrobot:greendao:3.2.2' // add library
greendao
{
daoPackage 'com.greendao' //生成dao 的包名
targetGenDir 'src/main/java' //目录
}
首先创建一个bean类:
@Entity//实体
public class Bean {
//自增的ID
@Id(autoincrement = true)
long e_id;
String name;
}
写完锤一下 会自动生成代码
完锤后自动生成三个类 路径是根据你上边 greendao 给的
再写一个工具类,也可以不写
工具类:
class My private constructor(context: Context){
var myDaoDao: MyDaoDao
init {
//第一种方法
val devOpenHelper = DaoMaster.DevOpenHelper(context, "my", null)
val writableDb = devOpenHelper.writableDb
val daoMaster = DaoMaster(writableDb)
val newSession = daoMaster.newSession()
this.myDaoDao=newSession.myDaoDao
//第二种方法
// val newDevSession = DaoMaster.newDevSession(context, "my")
// val myDaoDao1 = newDevSession.myDaoDao
}
//伴生 —— 单例
companion object{
private var my: My? =null
fun getmy(context: Context): My? {
if(my==null){
@Synchronized
if(my==null){
my= My(context)
}
}
return my
}
}
//添加数据
fun getinsert(myDao: MyDao){
myDaoDao.insert(myDao)
}
//删除数据
fun getdelet(myDao: MyDao){
myDaoDao.delete(myDao)
}
//修改数据
fun getupdata(myDao: MyDao){
myDaoDao.update(myDao)
}
//查询数据(指定数据)
fun getquest_count(name:String):List<MyDao>{
val where = myDaoDao.queryBuilder().where(MyDaoDao.Properties.Name.eq(name)).list()
return where
}
//查询数据(所有数据)
fun getquest_true(name:String):List<MyDao>{
val list = myDaoDao.queryBuilder().list()
return list
}
//查询数据(模糊数据)
fun getquest_like(name:String):List<MyDao>{
val where = myDaoDao.queryBuilder().where(MyDaoDao.Properties.Name.like("%$name%")).list()
return where
}
}
调用:
增加数据:
//因为id是自增长的 所以 null
My.getmy(this)?.getinsert(MyDao(null,"张三"))
其他的差不多就不一一调用了,删除和修改前建议先查询一下
还有删除表和一些操作时自己注意 有坑 多去看看 自动生成的那三个类