Android 特别好用的框架 一,SQLite数据库 GreenDao的简单使用

我们在项目中经常使用到本地数据库,来作为储存方式,今天我们来分享下GreenDao的使用心得

一,配置信息

1.在工程目录下build.gradle下添加插件

  repositories {
        google()
        jcenter()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:4.0.0'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath 'org.greenrobot:greendao-gradle-plugin:3.3.0' // 添加插件 更好支持GreenDao
 }

2.添加依赖库

	apply plugin: 'org.greenrobot.greendao'
   //db
    implementation 'org.greenrobot:greendao:3.3.0'

3.配置数据库路径

    greendao {
        schemaVersion 2 //数据库版本,我们添加字段,表这里需要+1
        daoPackage '"包名".model.db.greendao'//这里是dao包生成路径,大家可以定义自己的
        targetGenDir 'src/main/java'
    }

好得,配置信息就是这么简单 我们可以Sync Now即可 也可以Rebuild

配置搞好了,我们怎么来使用呢,现在我们在使用之前 我们来了解下GreenDao的结构
1.DaoMaster

DaoMaster保存数据库对象(SQLiteDatabase)并管理特定模式的Dao类。它具有静态方法来创建表或将他们删除。其内部类OpenHelper和DevOpenHelper是在SQLite数据库中创建模式的SQLiteOpenHelper实现。

2.DaoSession

管理特定模式的所有可用Dao对象,您可以使用其中一个getter方法获取。DaoSession还为实体提供了一些通用的持久性方法,如插入,加载,更新,刷新和删除。最后,DaoSession对象也跟踪一个身份范围。

3.Dao层

数据访问对象(Dao)持续存在并查询实体。对于每个实体,GreenDao生成一个Dao,它比DaoSession有更多的持久化方法,例如:count,loadAll和insertInTx。

4.实体类

持久对象,通常实体是使用标准Java属性(如POJO或JavaBean)来表示数据库的对象。目前不支持Kotlin

二,创建公共方法

1.我们创建一个实体类

@Entity
public class User implements Serializable {
    static final long serialVersionUID = 42L;
    
    @Id(autoincrement = true)//设置自增长
    private Long id;
    
    private String name;
 

    @Generated(hash = 1697332542)
    public DeviceEntity(Long id, String name) {
        this.id = id;

        this.mac = name;
     
    }

   
    public Long getId() {
        return this.id;
    }

    public void setId(Long id) {
        this.id = id;
    }

 
    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

我们需要注意的是添加注释 @Entity 和 @Id(autoincrement = true)之后构造方法和get,set方法会自己生成 rebuild即可

2.封装数据库工具类

object GreenDaoHelper {

    private const val DB_NAME = "user"  //数据库名称
    private lateinit var daoSession: DaoSession

    fun initDB(mContext: Context) {
     
        val db = DaoMaster.DevOpenHelper(mContext, DB_NAME).writableDb

        daoSession = DaoMaster(db).newSession()
    }
}

3.添加数据

	//单个添加
	fun insert(user: User) {
        daoSession.userDao.insert(user)
    }
	//批量添加
    fun insert(user: List<User>) {
        daoSession.userDao.insertInTx(user)
    }

4.删除数据

	//删除单个对象
	fun delete(user: User) {
        daoSession.userDao.delete(user)
    }
    //删除当前表
    fun delete() {
        daoSession.userDao.deleteAll()
    }

5.修改数据

	//修改单个对象
	fun delete(user: User) {
        daoSession.userDao.update(user)
    }

6.查询数据

	//查询当前列表所有信息
	fun select() {
        daoSession.userDao.loadAll().list
    }
    //根据id查询对象
	fun select(id:Long) {
        daoSession.userDao.queryBuilder().where(
        UserDao.Properties.Id.eq(id)
    }

三,初始化使用

//这个初始化可以写在App类下面,也可以写在MainActivity下,APP启动时候保证调用一次即可
   GreenDaoHelper.initDB(this)
   
//需要的时候直接调用方法即可
   var user=User()
   GreenDaoHelper.insert(user)
以上就是关于GreenDao的基本使用情况了,当然我们还有很多代码可以根据需求自由添加,比如排序查询了,这些都是支持的,好的就写到这里了,不好的地方还望小伙们们多多指教,不明白的小伙伴可以留言

猜你喜欢

转载自blog.csdn.net/qq_28643195/article/details/107780106