美文网首页
Android数据库框架GreenDao 3.2.2

Android数据库框架GreenDao 3.2.2

作者: 凌康ACG | 来源:发表于2020-04-05 20:40 被阅读0次

    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<User> 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

          本文链接:https://www.haomeiwen.com/subject/giepphtx.html