Android GrennDao集成及使用

一.GreenDao配置

1.在项目下的 build.gradle 中的 dependencies 中填入GreenDao 插件
这里写图片描述

2.在app下的build.gradle 中应用 greenDAO 插件(放在顶部)
这里写图片描述

3.在app下的 dependencies中加入依赖

// greenDAO 函数库
implementation 'org.greenrobot:greendao:3.2.0'

4.在app 的 build.gradle 中配置greenDao 文件生成地址

这里写图片描述

二.生成表

1.编写实体类

import org.greenrobot.greendao.annotation.Entity;
import org.greenrobot.greendao.annotation.Id;
import org.greenrobot.greendao.annotation.NotNull;

@Entity
public class User {

    @Id(autoincrement = true)
    private Long uId;
    private String name;
    @NotNull
    private String sex;
}
  1. build 一下项目,此时,会在src/main/java下包名为 project.greendao 生成dao
    这里写图片描述

常用GreenDao 注解

注解 含义
@Entity 用于标识这是一个需要Greendao帮我们生成代码的bean
@Id 标明主键,括号里可以指定是否自增
@Property 用于设置属性在数据库中的列名(默认不写就是保持一致)
@NotNull 非空
@Index 通过这个字段建立索引
@Unique 添加唯一约束
@ToOne 是将自己的一个属性与另一个表建立关联
@ToMany 标识这个字段是自定义的不会创建到数据库表里
@Entity
public class User {

    @Id(autoincrement = true)
    private Long uId;
    @Property(nameInDb = "userName")
    private String name;
    @NotNull
    private String sex;
    @Transient
    private String number;
    @Generated(hash = 870568119)
    public User(Long uId, String name, @NotNull String sex) {
        this.uId = uId;
        this.name = name;
        this.sex = sex;
    }
    @Generated(hash = 586692638)
    public User() {
    }
    public Long getUId() {
        return this.uId;
    }
    public void setUId(Long uId) {
        this.uId = uId;
    }
    public String getName() {
        return this.name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSex() {
        return this.sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
}

三.增删改查

在进行增删改查前,先封装一下GreenDao 数据库调用类。

public class GreenDaoUtils {

  public static DaoSession daoSession;
  public static GreenDaoUtils greenDaoUtils;

  public static DaoSession getInstance() {
     if (greenDaoUtils == null) {
         synchronized (GreenDaoUtils.class) {
           if (greenDaoUtils == null) {
                DaoMaster.DevOpenHelper db = new DaoMaster.DevOpenHelper(App.getContext(), "test-db", null);
                DaoMaster daoMaster = new DaoMaster(db.getWritableDb());
                daoSession = daoMaster.newSession();
               }
          }
        }
      return daoSession;
   }
}

1.新增

  /**
    * 新增数据
    */
   User user=new User(null,"小红","女");
   User user1=new User(null,"小百","男");
   GreenDaoUtils.getInstance().insert(user);
   GreenDaoUtils.getInstance().insert(user1);

2.查询

 /**
   * 查询全部
   */
List<User> userList= GreenDaoUtils.getInstance().getUserDao().loadAll();
for (User u:userList) {
      Log.e(TAG, "查询: name="+u.getName() );
      Log.e(TAG, "查询: sex="+u.getSex() );
      Log.e(TAG, "查询: id="+u.getUId() );
}


/**
  * 查询指定数据
  */
User user2=GreenDaoUtils.getInstance()
          .queryBuilder(User.class)
          .where(UserDao.Properties.Name.eq("小百"))
          .unique();

Log.e(TAG, "查询指定数据: name="+user2.getName() );
Log.e(TAG, "查询指定数据: sex="+user2.getSex() );
Log.e(TAG, "查询指定数据: id="+user2.getUId() );

这里写图片描述

这里写图片描述

3.修改

/**
  * 修改
  */
User user3=GreenDaoUtils.getInstance()
           .queryBuilder(User.class)
           .where(UserDao.Properties.Name.eq("小百"))
           .unique();
 if(user3!=null){
      user3.setSex("女");
      GreenDaoUtils.getInstance().update(user3);
  }

这里写图片描述

4.删除

/**
  * 删除单条
  */
User user4 = GreenDaoUtils.getInstance()
             .queryBuilder(User.class)
             .where(UserDao.Properties.Name.eq("小百"))
             .unique();
if (user4 != null) {
    GreenDaoUtils.getInstance().delete(user4);
}

这里写图片描述

//删除全部GreenDaoUtils.getInstance().getUserDao().deleteAll();

这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_26057629/article/details/81458539