我们在项目中经常使用到本地数据库,来作为储存方式,今天我们来分享下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\'//dbimplementation \'org.greenrobot:greendao:3.3.0\'
3.配置数据库路径
greendao {schemaVersion 2 //数据库版本,我们添加字段,表这里需要+1daoPackage \'\"包名\".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.我们创建一个实体类
@Entitypublic 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: DaoSessionfun initDB(mContext: Context) {val db = DaoMaster.DevOpenHelper(mContext, DB_NAME).writableDbdaoSession = 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的基本使用情况了,当然我们还有很多代码可以根据需求自由添加,比如排序查询了,这些都是支持的,好的就写到这里了,不好的地方还望小伙们们多多指教,不明白的小伙伴可以留言