apply plugin: 'com.android.application'
apply plugin: 'org.greenrobot.greendao' // apply plugin
dependencies {
compile 'org.greenrobot:greendao:3.2.2' // add library
// This is only needed if you want to use encrypted databases
compile 'net.zetetic:android-database-sqlcipher:3.5.6'//加密库依赖(可选项)
}
d、点击 : Sync Project with Gradle Files 按钮,同步一下工程 , 配置完成
五、快速入门
1, 我们写一个简单的实体类(User),测试一下
package com.speedystone.greendaodemo.model;
import org.greenrobot.greendao.annotation.Entity;
import org.greenrobot.greendao.annotation.Id;
/**
* Created by Speedy on 2017/6/30.
*/
@Entity
public class User {
@Id
private long id;
private String name;
private int age;
//此处省略了getter,setter 方法
}
2、点击 Make Project(或者 Make Moudle ‘App’) 编译一下工程 。如果配置正确,会在配置的包目录下自动会生成 DaoMaster,DaoSession 和 UserDao 类 。(没有对应文件产生式可以重启一下Androidstudio)
User user = new User();
user.setUserId(1);
user.setName("小明");
user.setAge(16);
userDao.insert(user);
5.2插入记录到数据库,id重复时直接替换
User user = new User();
user.setUserId(1);
user.setName("小明");
user.setAge(16);
//插入或者替换
userDao.insertOrReplace(user);
6, 删除记录
public void delete(User user){
userDao.delete(user);
}
或者
public void deleteByUserId(long userid){
userDao.deleteByKey(1L);
}
7,更新记录
public void update(User user){
userDao.update(user);
}
8,查询记录
public List query(){
return userDao.loadAll();// 查询所有记录
}
public User query2(){
return userDao.loadByRowId(1);//根据ID查询
}
public List query2(){
return userDao.queryRaw("where AGE>?","10");//查询年龄大于10的用户
}
//查询年龄大于10的用户
public List query4(){
QueryBuilder builder = userDao.queryBuilder();
return builder.where(UserDao.Properties.Age.gt(10)).build().list();
}
@Entity(
schema = "myschema",
active = true,
nameInDb = "AWESOME_USERS",
indexes = {
@Index(value = "name DESC", unique = true)
},
createInDb = true,
generateConstructors = false,
generateGettersSetters = true
)
public class User {
...
}
@Id 、@Index
@Entity
public class User {
@Id
private Long id;
@Index(unique = true)
private String name;
}
@Unique 表名该属性在数据库中只能有唯一值
@Entity
public class User {
@Id
private Long id;
@Unique
private String name;
}
@ToOne 表示一对一关系
@Entity
public class Order {
@Id private Long id;
private long customerId;
@ToOne(joinProperty = "customerId")
private Customer customer;
}
@Entity
public class Customer {
@Id
private Long id;
}
@OrderBy 更加某一字段排序 ,例如:@OrderBy(“date ASC”)
@ToMany 定义一对多个实体对象的关系
@Entity
public class Customer {
@Id private Long id;
@ToMany(referencedJoinProperty = "customerId")
@OrderBy("date ASC")
private List orders;
}
@Entity
public class Order {
@Id private Long id;
private Date date;
private long customerId;
}
下面总结里一些GreenDao的使用心得
使用 .insert(userEntity); 方法时候报错,APP直接的崩溃闪退
android.database.sqlite.SQLiteConstraintException: UNIQUE constraint failed: USER_ENTITY._id (Sqlite code 1555), (OS error - 2:No such file or directory)