1、准备工做数据库
一、项目build.gradle文件下的dependencies中引入插件:app
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.1'
二、在module的build.gradle文件下顶部依赖插件:ide
apply plugin: 'org.greenrobot.greendao'
三、在module的build.gradle文件下的dependencies中引入依赖:gradle
compile 'org.greenrobot:greendao:3.2.0'
2、GreenDao的注解ui
一、实体@Entity注解:this
schema:告知GreenDao当前实体属于哪一个schemaspa
active:标记一个实体处于活动状态,活动实体有更新、删除和刷新方法插件
nameInDb:在数据中使用的别名,默认使用的是实体的类名code
indexes:定义索引,能够跨越多个列对象
createInDb:标记建立数据库表
二、基础属性注解
@Id :主键 Long型,能够经过@Id(autoincrement = true)设置自增加
@Property:设置一个非默认关系映射所对应的列名,默认是的使用字段名 举例:@Property (nameInDb="name")
@NotNul:设置数据库表当前列不能为空
@Transient :添加次标记以后不会生成数据库表的列
三、索引注解
@Index:使用@Index做为一个属性来建立一个索引,经过name设置索引别名,也能够经过unique给索引添加约束
@Unique:向数据库列添加了一个惟一的约束
四、关系注解
@ToOne:定义与另外一个实体(一个实体对象)的关系
@ToMany:定义与多个实体对象的关系
3、简单使用----使用管理类DBManager,操做名称为test_db的数据库,完成数据库中用户实体类User的增删改查等操做
一、建立实体用户类User,使用GreenDao进行注解,ReBuild项目。
/** * <p>Description: */ @Entity public class User { @Id(autoincrement = true) private Long id ; private String name ; private int age ; public User(String name,int age){ this.name = name ; this.age = age ; } @Generated(hash = 1309193360) public User(Long id, String name, int age) { this.id = id; this.name = name; this.age = age; } @Generated(hash = 586692638) public User() { } public Long getId() { return this.id; } public void setId(Long id) { this.id = id; } public String getName() { return this.name; } public void setName(String name) { this.name = name; } public int getAge() { return this.age; } public void setAge(int age) { this.age = age; } }
二、建立管理类DBManager,完成对User的增删改查方法
public class DBManager { private static DBManager instance ; private final static String dbName = "test_db"; private Context mContext ; private DBManager(Context context){ this.mContext = context ; openHelper = new DaoMaster.DevOpenHelper(context,dbName); } private DaoMaster.DevOpenHelper openHelper = null ; public static DBManager getInstance(Context context){ if(instance == null){ synchronized (DBManager.class){ if(instance == null){ instance = new DBManager(context); } } } return instance ; } private SQLiteDatabase getWriteableDatabase(){ if(openHelper == null){ openHelper = new DaoMaster.DevOpenHelper(mContext,dbName); } return openHelper.getWritableDatabase(); } private SQLiteDatabase getRedadableDatabase(){ if(openHelper == null){ openHelper = new DaoMaster.DevOpenHelper(mContext,dbName); } return openHelper.getReadableDatabase() ; } public void saveUser(User user){ DaoMaster daoMaster = new DaoMaster(getWriteableDatabase()); DaoSession daoSession = daoMaster.newSession(); UserDao userDao = daoSession.getUserDao(); //存入user对象 userDao.save(user); } public void saveUsers(List<User> users){ DaoMaster daoMaster = new DaoMaster(getWriteableDatabase()); DaoSession daoSession = daoMaster.newSession(); UserDao userDao = daoSession.getUserDao(); userDao.saveInTx(users); } public void delteUser(User user){ DaoMaster daoMaster = new DaoMaster(getWriteableDatabase()); DaoSession daoSession = daoMaster.newSession(); UserDao userDao = daoSession.getUserDao(); userDao.delete(user); } public void updateUser(User user){ DaoMaster daoMaster = new DaoMaster(getWriteableDatabase()); DaoSession daoSession = daoMaster.newSession(); UserDao userDao = daoSession.getUserDao(); userDao.update(user); } public List<User> queryUser(){ DaoMaster daoMaster = new DaoMaster(getRedadableDatabase()); DaoSession daoSession = daoMaster.newSession(); UserDao userDao = daoSession.getUserDao(); QueryBuilder<User> qb = userDao.queryBuilder(); List<User> list = qb.list(); return list ; } public List<User> queryUser(int age){ DaoMaster daoMaster = new DaoMaster(getRedadableDatabase()); DaoSession daoSession = daoMaster.newSession(); UserDao userDao = daoSession.getUserDao(); QueryBuilder<User> qb = userDao.queryBuilder(); //添加查询条件 qb.where(UserDao.Properties.Age.eq(age)); List<User> list = qb.list(); return list ; } }