Android GreenDao数据库的基本使用

GreenDAO是一个高性能的Android ORM框架,简化了数据库操作。本文介绍了如何添加依赖、定义实体类、封装数据库操作类,并展示了增删改查的示例。使用GreenDAO可以实现快速的数据库存取,且内存占用小,支持数据库加密。
摘要由CSDN通过智能技术生成

前言

GreenDAO是一个对象关系映射(ORM Object RelationShop Mapping)的框架,能够提供一个接口通过操作对象的方式去操作关系型数据库,它能够让你操作数据库时更简单、更方便。

GreenDao 官网:http://greenrobot.org/greendao/

GreenDao 特征介绍:http://greenrobot.org/greendao/features/

GreenDao 学习文档:http://greenrobot.org/greendao/documentation/

GreenDao 更新日志:http://greenrobot.org/greendao/changelog/

GreenDao GitHub地址:https://github.com/greenrobot/greenDAO

GreenDao优点:
①性能高,号称Android最快的关系型数据库,存取速度快

②内存占用小

③库文件比较小,小于100K,编译时间低,而且可以避免65K方法限制

④支持数据库加密 greendao支持SQLCipher进行数据库加密

⑤激活实体,支持缓存,代码自动生成。

1.添加依赖

1.
在项目根目录的 build.gradle 添加
buildscript {
    repositories {
        jcenter()
        mavenCentral() // *1. add repository
    }
   
     dependencies {
        classpath 'com.android.tools.build:gradle:3.5.3'
        classpath 'org.greenrobot:greendao-gradle-plugin:3.3.0' //*2.  add plugin
    } 

2.
在app的 build.gradle 添加
apply plugin: 'com.android.application'
apply plugin: 'org.greenrobot.greendao' //*1.apply plugin

dependencies {
    implementation 'org.greenrobot:greendao:3.3.0' // *2.add library
}
3.GreenDao 3 采用注解的方式来定义实体类,可按如下设置生成文件的目录,在app的 build.gradle 添加
greendao {
    // 指定数据库schema版本号,迁移等操作会用到
    schemaVersion 1
    // 设置生成数据库文件的目录,默认是在build中,可以将生成的文件放到我们的java目录中
    targetGenDir 'src/main/java'
    // 设置生成的数据库相关文件的包名,默认为entity所在的包名
    //  在这里 'yoho' 是数据库名  可以自行更改 
    daoPackage 'com.dgq.greendao.gen'
}

2.定义实体类

@Entity()
public class User {
//主键自增
    @Id(autoincrement = true)
    private Long u_id = null;
    @NotNull
    //  属性  自定义
    private String u_name;
// A code block
然后  Make Project  就是锤子 锤一下  
变化后的实例类是这样的
@Entity()
public class User {
    @Id(autoincrement = true)
    private Long u_id = null;
    @NotNull
    private String u_name;
    @Generated(hash = 989383688)
    public User(Long u_id, @NotNull String u_name) {
        this.u_id = u_id;
        this.u_name = u_name;
    }
//这个是后来自己添加的  便于删除
    public User(Long u_id) {
        this.u_id = u_id;
    }

    @Generated(hash = 586692638)
    public User() {
    }
    public Long getU_id() {
        return this.u_id;
    }
    public void setU_id(Long u_id) {
        this.u_id = u_id;
    }
    public String getU_name() {
        return this.u_name;
    }
    public void setU_name(String u_name) {
        this.u_name = u_name;
    }
}
还会生成这三个类  
不用操作他

在这里插入图片描述

3.封装数据库操作类

public class DBManager {
    //数据库名  这里和添加依赖里的第3步 要一样
    private final String Name = "dgq.db";
    //表
    private DaoSession mDaoSession;
    //库
    private DaoMaster mDaoMaster;
    private Context mContext;

    //初始化,在Application
    public void init(Context context) {
        this.mContext = context;
    }

    //单例
    private static DBManager mDBManager;

    public static DBManager getInstance() {
        if (mDBManager == null) {
            mDBManager = new DBManager();
        }
        return mDBManager;
    }
   //获取数据库DaoMaster
    public DaoMaster getmDaoMaster() {
        if (mDaoMaster == null) {
            DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(mContext, Name);
            mDaoMaster = new DaoMaster(devOpenHelper.getWritableDatabase());
        }
        return mDaoMaster;
    }
   //获取数据库CRUD DaoSession
    public DaoSession getmDaoSession() {
        if (mDaoMaster == null) {
            getmDaoMaster();
        }
        if (mDaoSession == null) {
            mDaoSession = mDaoMaster.newSession();
        }
        return mDaoSession;
    }
}

4.初始化

public class App extends Application {
 
    @Override
    public void onCreate() {
        super.onCreate();
        DBManager.getInstance().init(this);
    }
}
记得在AndroidManifest.xml  也就是清单文件内注册

5.增删改查 调用数据库

增加
 DBManager.getInstance().getmDaoSession().insert(new User(null, "老耀"));
删除
     DBManager.getInstance().getmDaoSession().delete(new User((long) 1));
修改
      DBManager.getInstance().getmDaoSession().update(new User((long) 1, "老欣"));
查找
      List<User> users = DBManager.getInstance().getmDaoSession().loadAll(User.class);
       LogUtils.json(users);
LogUtils用的是工具类  需要倒一个工具类依赖
  好用!!!

在这里插入图片描述

  //工具类
    api 'com.blankj:utilcodex:1.26.0'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值