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 ; } }