Android数据库框架GreenDao 3.2.2

android数据库框架主流开源的有:OrmLite、greenDAO 、Realm、DBFlow、LitePal,优缺点自行百度。
没有最好,只有最合适,我这选择社区活跃、star高的greenDAO,个人比较喜欢使用最新版来搞
2020年4月5日20:18:05最新版版GreenDao 3.2.2,可以算是最新的了吧?
部分参考官网文档https://greenrobot.org/greendao/
官方git:https://github.com/greenrobot/greenDAO

开发环境工具

jdk8 + android studio 3.6(新) + GreenDao 3.2.2

一、集成插件

集成greendao-gradle-plugin插件用于自动生成dao映射等等
在build.gradle中:classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2'

buildscript {
    
    repositories {
        // 添加阿里云 maven 地址
        maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
        maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter' }
        google()
        jcenter()
        
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.6.1'
        // 添加以下插件
        classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin


        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

配置依赖

在app/build.gradle中:

//顶部添加
apply plugin: 'org.greenrobot.greendao' // apply plugin

//加入依赖
//sql
implementation 'org.greenrobot:greendao:3.2.2' // add library

//最下面加入配置
greendao{
    schemaVersion 1
    // 注意配置你的dao生成包
    daoPackage 'com.lingkang.flychat.mapper.gen'
    targetGenDir 'src/main/java'
}
//schemaVersion: 数据库schema版本,也可以理解为数据库版本号
//daoPackage:设置DaoMaster、DaoSession、Dao包名
//targetGenDir:设置DaoMaster、DaoSession、Dao目录
//targetGenDirTest:设置生成单元测试目录
//generateTests:设置自动生成单元测试用例

此处注意下dao生成的包路径即可,我的是com.lingkang.flychat.mapper.gen

二、创建entity

@Entity
public class User {
    @Id
    private Long id;
    private int memberSex;//性别
    private String memberLastX;//X币
    @Property(nameInDb = "sex")
    private String memberNickname;//昵称
    private String memberIcon;//头像地址链接
    private String memberMobile;//手机号
    private int memberId;//用户ID
    @Transient
    private String memberDetailAddr;//用户的详细地址
    private String memberLastExperience;//用户经验值
    private String memberLevelName;//用户等级昵称
    private long memberBirthday;//用户生日
    private String memberProvince;//用户所在地
}

@Id-- 主键 Long型,可以通过@Id(autoincrement = true)设置自增长。通过这个注解标记的字段必须是Long,数据库中表示它就是主键,并且默认是自增的。
@Property-- 设置一个非默认关系映射所对应的列名,默认是的使用字段名 举例:@Property (nameInDb="name")
@Index-- 使用@Index作为一个属性来创建一个索引;定义多列索引(@link Entity#indexes())
@Transient-- 添加次标记之后不会生成数据库表的列

更多注解说明,自行查找资料。

构建dao

使用快捷键Ctrl + F9 或者Build → Make Project

image.png

即可生成了dao,如下
image.png

三、初始化

在application入口:

import android.app.Application;

import com.lingkang.flychat.mapper.gen.DaoMaster;
import com.lingkang.flychat.mapper.gen.DaoSession;

import org.greenrobot.greendao.database.Database;


public class FlyChatApplication extends Application {

    private DaoSession daoSession;

    @Override
    public void onCreate() {
        super.onCreate();
        initSQLite();
    }

    private void initSQLite() {
        // regular SQLite database   其中 fcdb为数据库名称
        DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "fcdb");
        Database db = helper.getWritableDb();
        // 如果想要加密就使用以下:encryption-key是你想要的key
        //Database db = helper.getEncryptedWritableDb("encryption-key");
        daoSession = new DaoMaster(db).newSession();
    }
    
    //用于全局数据库会话操作
    public DaoSession getDaoSession() {
        return daoSession;
    }
}

注意下用于全局数据库会话操作和Application名字:getDaoSession()FlyChatApplication 后面用到

四、调用

准备了这么多,开始调用:
1、首先获取数据库会话
2、使用会话进行操作

// 获取对象,从全局里拿
DaoSession daoSession = ((FlyChatApplication) getApplication()).getDaoSession();
UserDao userDao=daoSession.getUserDao();

//增
User user=new User();
user.setId(1L);
user.setMemberSex(1);
user.setMemberNickname("凌康");
user.setMemberMobile("15977707555");
userDao.insert(user);

//查  ---使用toString需要在entity中@Override toString
List users=userDao.loadAll();
LogUtils.e(users.get(0).toString());

//改,全量覆盖
User user=new User();
user.setId(1L);
user.setMemberNickname("66666666");
userDao.update(user);

//删
userDao.deleteByKey(1L);

效果如下:


image.png

image.png

更多操作可参考官方文档

你可能感兴趣的:(Android数据库框架GreenDao 3.2.2)