GreenDao使用笔记

基本认识:

GreenDao是GreenRobot开源的ORM数据库。
主要有几个特点:
1、高性能。
2、易于使用的强大API。
3、最小的内存消耗。
4、库大小很小(<100kb)
5、支持数据库加密,确保用户数据安全(人脸数据核心问题)

在使用的过程中,主要有三个核心类:
1、DaoMaster:DaoMaster负责保存数据库对象(SQLiteDatabase)并且负责管理特定模式的DAO类。存在内部类OpenHelper和DevOpenHelper是SQLiteOpenHelper的实现,在SQLite数据库中创建模式。
2、DaoSession:管理特定模式的所有可用DAO对象,通过getter方法获取某个对象。同时提供一些通用的持久性方法,如实体的增删改查。
3、XXXDao:数据访问对象(DAO)持久存在并查询实体。对于每个实体,greenDAO生成DAO。它具有比DaoSession更多的持久性方法,例如:count,loadAll和insertInTx。

使用流程:

前期配置:

1、在项目的build.gradle文件中添加插件路径:
在这里插入图片描述

2、在Module目录下添加依赖:
在这里插入图片描述

3、在Module目录下配置对应的dao:
在这里插入图片描述

配置完成,开始编译。

开始使用:

1、创建实体类:
User:

@Entity    // 使用此注解,GreenDao会自动识别后生成对应的Dao实体类
public class User {
    // 唯一主键,要求唯一主键的元素必须为Long类型
    @Id(autoincrement = true)
    private Long id;

    private String name;
    private String location;
    private String sex;
    }

在进行Build之后,可以看到在设置的dao文件夹下生成三个核心类:
在这里插入图片描述

2、初始化GreenDao:
一般来说可以在项目的主Application中进行创建GreenDAo实例。创建的代码:

 /**
     * 初始化GreenDao,直接在Application中进行初始化操作
     */
    private void initGreenDao() {
        DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "test.db");
        SQLiteDatabase db = helper.getWritableDatabase();
        DaoMaster daoMaster = new DaoMaster(db);
        daoSession = daoMaster.newSession();
    }
    
    private DaoSession daoSession;
    public DaoSession getDaoSession() {
        return daoSession;
    }

运行之后,可以看到我们的数据库文件已经创建成功:
在这里插入图片描述

开始增删改查:
1、增加数据:
通过DaoSession的insert方法来进行插入:

    public void addUsers() {
        // 获取对应的DaoSession,这里本地定义了一个gerDaoSession方法,因此可以使用this获得,一般要放在Application中获得
        DaoSession daoSession = this.getDaoSession();
        for (int i = 0; i < 10; i ++) {
            User user = new User();
            user.setName("张三" + i);
            user.setSex(i % 2 == 0 ? "男" : "女");
            user.setLocation("广东");
            daoSession.insert(user);
        }
    }

可以看到数据创建成功:
在这里插入图片描述

2、删除数据:
删除单个数据:

  public void delete() {
        User user = new User();
        // 删除数据的默认匹配格式是唯一ID。
        user.setId((long)1);
        DaoSession daoSession = this.getDaoSession();
        daoSession.delete(user);
    }

删除结果:
在这里插入图片描述

数据库中id为1的数据删除。
删除所有数据:

  public void deleteAll() {
        DaoSession daoSession = this.getDaoSession();
        daoSession.deleteAll(User.class);
    }

删除User表单的所有数据。

3、查询数据:
查询的方法有:

  • loadAll():查询所有数据。
  • queryRaw():根据条件查询。
  • queryBuilder() : 方便查询的创建。
    查询全部代码:
 public List queryAll(){
        List<User> users = daoSession.loadAll(User.class);
        return users;
    }

条件查询代码:

 public List queryData(String s){
        List<User> students = daoSession.queryRaw(User.class," where id = ?", s);
        return students;    
    }
    
    // 若有多个条件
    
 public List queryData(String s){
        List<User> students = daoSession.queryRaw(User.class," where id = ? AND where name = ?", s, "name");
        return students;    
    }

查询结果:

在这里插入图片描述

通过queryBuilder()提高查询效率:

    public List<User> queryByBuilder() {
        DaoSession daoSession = this.getDaoSession();
        // 创建对应的QueryBuilder
        QueryBuilder<User> qb = daoSession.queryBuilder(User.class);
        // 通过提供的已有方法和自动生成的列参数来进行查询
        return qb.where(UserDao.Properties.Name.eq("张三2")).list();
    }

4、更新数据:
更新代码:

    public void update(User user) {
        DaoSession daoSession = this.getDaoSession();
        daoSession.update(user);
    }

参考:
https://www.jianshu.com/p/53083f782ea2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值