一.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;
}
- 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();