安卓:Kotlin数据库框架GreenDao的使用

优势:
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{
        val where = myDaoDao.queryBuilder().where(MyDaoDao.Properties.Name.eq(name)).list()
        return where
    }
    //查询数据(所有数据)
    fun getquest_true(name:String):List{
        val list = myDaoDao.queryBuilder().list()
        return list
    }
    //查询数据(模糊数据)
    fun getquest_like(name:String):List{
        val where = myDaoDao.queryBuilder().where(MyDaoDao.Properties.Name.like("%$name%")).list() 
        return where
    }

}

调用:
增加数据:

//因为id是自增长的 所以 null
          My.getmy(this)?.getinsert(MyDao(null,"张三"))

其他的差不多就不一一调用了,删除和修改前建议先查询一下
还有删除表和一些操作时自己注意 有坑 多去看看 自动生成的那三个类

你可能感兴趣的:(安卓:Kotlin数据库框架GreenDao的使用)