GreenDao的初次使用--号称Android最快的关系型数据库
一、准备工作
1、项目build.gradle文件下的dependencies中引入插件:
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.1'
2、在module的build.gradle文件下顶部依赖插件:
apply plugin: 'org.greenrobot.greendao'
3、在module的build.gradle文件下的dependencies中引入依赖:
compile 'org.greenrobot:greendao:3.2.0'
二、GreenDao的注解
1、实体@Entity注解:
schema:告知GreenDao当前实体属于哪个schema
active:标记一个实体处于活动状态,活动实体有更新、删除和刷新方法
nameInDb:在数据中使用的别名,默认使用的是实体的类名
indexes:定义索引,可以跨越多个列
createInDb:标记创建数据库表
2、基础属性注解
@Id :主键 Long型,可以通过@Id(autoincrement = true)设置自增长
@Property:设置一个非默认关系映射所对应的列名,默认是的使用字段名 举例:@Property (nameInDb="name")
@NotNul:设置数据库表当前列不能为空
@Transient :添加次标记之后不会生成数据库表的列
3、索引注解
@Index:使用@Index作为一个属性来创建一个索引,通过name设置索引别名,也可以通过unique给索引添加约束
@Unique:向数据库列添加了一个唯一的约束
4、关系注解
@ToOne:定义与另一个实体(一个实体对象)的关系
@ToMany:定义与多个实体对象的关系
三、简单使用----使用管理类DBManager,操作名称为test_db的数据库,完成数据库中用户实体类User的增删改查等操作
1、创建实体用户类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; } }
2、创建管理类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 ; } }