github:
https://github.com/anymyna/ui
步骤:
1、 在项目下的build.gradle中添加
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2'
2、 在app下的bulid.gradle下添加相关依赖和配置数据库相关信息
apply plugin: 'org.greenrobot.greendao'
implementation 'org.greenrobot:greendao:3.2.2'
greendao {
schemaVersion 1 //数据库版本号
daoPackage 'com.example.ui.database.greenDao.db'
// 设置DaoMaster、DaoSession、Dao 包名
//targetGenDir 'src.main.java'//设置DaoMaster、DaoSession、Dao目录,请注意,这里路径用.不要用/
generateTests false //设置为true以自动生成单元测试。
targetGenDirTests 'src/main/java' //应存储生成的单元测试的基本目录。默认为 src / androidTest / java。
}
配置完成,在Android Studio ->Build -> Make Project
3、 Application 中初始化
private void initGreenDao() {
DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "test.db");
SQLiteDatabase db = helper.getWritableDatabase();
DaoMaster daoMaster = new DaoMaster(db);
daoSession = daoMaster.newSession();
}
private DaoSession daoSession;
public DaoSession getDaoSession() {
return daoSession;
}
4、 新建存储对象实体类
@Entity
public class Student {
@Id(autoincrement = true)
Long id;
public int getStudentNo() {
return studentNo;
}
public void setStudentNo(int studentNo) {
this.studentNo = studentNo;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Long getId() {
return this.id;
}
public void setId(Long id) {
this.id = id;
}
@Unique
int studentNo;
int age;
String name;
@Generated(hash = 89133420)
public Student(Long id, int studentNo, int age, String name) {
this.id = id;
this.studentNo = studentNo;
this.age = age;
this.name = name;
}
@Generated(hash = 1556870573)
public Student() {
}
5、 数据操作、插入数据、删除数据、更新数据、查询数据
//插入数据
DaoSession daoSession = ((MyApplication) getApplication()).getDaoSession();
for (int i = 0; i < 10; i++) {
Student student = new Student();
student.setStudentNo(i);
int age = i;
student.setAge(age);
student.setName("name "+i);
//daoSession.insert(student);
daoSession.insertOrReplace(student);//存在则替换,数据不存在则插入
}
//查询数据
List<Student> students = daoSession.queryRaw(Student.class, " where age = ?", "2");
//删除数据
if(students != null & students.size()>0)
{
Logger.d("delete "+students.get(0).getName());
daoSession.delete(students.get(0));
}
//更新数据
/// Cannot update entity without key - was it inserted before? 异常的原因:在调用update()时传入的主键为 null
Student student = new Student();
student.setStudentNo(3);
student.setId(new Long(3));
student.setName("angel");
daoSession.update(student);
students = daoSession.queryRaw(Student.class, " where age = ?", "3");
if(students != null & students.size()>0)
{
students.get(0).setName("angel");
daoSession.update(students.get(0));
Logger.d("update "+students.get(0).getName());
}