Eclipse:
1、新建Android 项目 (GreenDaoEclipseDemo)
2、复制freemarker-2.3.20.jar和greendao-generator-1.3.0.jar 和 greendao-1.3.7.jar(3个)或者freemarker-2.3.23.jar和greendao-generator-2.0.0.jar(2个)到libs目录下
3、新建类:com.doris.greendaoeclipsedemo.test.Test.java
package com.doris.greendaoeclipsedemo.test;
import de.greenrobot.daogenerator.DaoGenerator;
import de.greenrobot.daogenerator.Entity;
import de.greenrobot.daogenerator.Property;
import de.greenrobot.daogenerator.Schema;
public class Test {
public static void main(String[] args) {
Schema schema = new Schema(1, "com.doris.greendaoeclipsedemo.dao");
// 学生
Entity student = schema.addEntity("Student"); // 参数首字母必须大写
student.addIdProperty(); // id
student.addStringProperty("name"); // 姓名
student.addIntProperty("age"); // 性别
Property classId= student.addLongProperty("classId").getProperty();
Property cardId = student.addLongProperty("cardId").getProperty();
// 学生证
Entity card = schema.addEntity("Card");
card.addIdProperty();
card.addStringProperty("cardNumber"); // 证件号码
// 一对一
student.addToOne(card, cardId);
// 班级
Entity clas = schema.addEntity("Clas");
clas.addIdProperty();
clas.addStringProperty("name");
// 一对多
student.addToOne(clas, classId);
clas.addToMany(student, classId).setName("students");
try {
new DaoGenerator().generateAll(schema, "../GreenDaoEclipseDemo/src");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
运行:
刷新项目:
4、基本的操作数据
// 增
private void insertStudent() {
Student student = new Student();
student.setName("张三");
student.setAge(23);
Card card = new Card();
card.setCardNumber("101");
cardDao.insert(card);
// 查询班级是否存在
Clas clas = clasDao.queryBuilder().where(ClasDao.Properties.Name.eq("1")).unique();
if(clas == null ){
clas = new Clas();
clas.setName("1");
clasDao.insert(clas);
}
student.setCard(card);
student.setClas(clas);
studentDao.insert(student);
}
// 删
private void delete(Student student, Clas clas){
cardDao.delete(student.getCard());
studentDao.delete(student);
for(Student student : clas.getStuents()){
cardDao.delete(student.getCard());
studentDao.delete(student);
}
clasDao.delete(clas);
}
// 改
public void updateStudent(Student studen) {
student.setName("张三丰");
student.setAge(33);
student.getCard().setCardNumber(100);
cardDao.update(student.getCard());
// 查询班级是否存在
Clas clas = clasDao.queryBuilder().where(ClasDao.Properties.Name.eq("2")).unique();
if(clas == null ){
clas = new Clas();
clas.setName(studentClass);
clasDao.insert(clas);
}else{
clas.setName(studentClass);
clasDao.update(clas);
}
student.setClas(clas);
studentDao.update(student);
}
// 查所有
private void queryAll(){
List<Student> students = studentDao.queryBuilder().list();
List<Clas> classList = clasDao.queryBuilder().list();
List<Card> cards = cardDao.queryBuilder().list();
}
Android Studio:
1、新建Android项目 (GreenDaoStudioDemo)
2、
3、新建Java Library (GreenDaoStudioDemoLibrary)
4、和2步骤一样,给GreenDaoStudioDemoLibrary添加依赖
5、GreenDaoStudioDemoLibrary
build.gradle
apply plugin: 'java'
apply plugin: 'application'
mainClassName = 'java.Test'
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'de.greenrobot:greendao-generator:2.1.0'
}
com.example.Test.java
package com.example;
import de.greenrobot.daogenerator.DaoGenerator;
import de.greenrobot.daogenerator.Entity;
import de.greenrobot.daogenerator.Property;
import de.greenrobot.daogenerator.Schema;
public class Test {
public static void main(String[] args){
Schema schema = new Schema(1, "com.doris.greendaostudiodemo.dao");
// 学生
Entity student = schema.addEntity("Student"); // 参数首字母必须大写
student.addIdProperty(); // id
student.addStringProperty("name"); // 姓名
student.addIntProperty("age"); // 性别
Property classId= student.addLongProperty("classId").getProperty();
Property cardId = student.addLongProperty("cardId").getProperty();
// 学生证
Entity card = schema.addEntity("Card");
card.addIdProperty();
card.addStringProperty("cardNumber"); // 证件号码
// 一对一
student.addToOne(card, cardId);
// 班级
Entity clas = schema.addEntity("Clas");
clas.addIdProperty();
clas.addStringProperty("name");
// 一对多
student.addToOne(clas, classId);
clas.addToMany(student, classId).setName("students");
try {
new DaoGenerator().generateAll(schema,"app/src/main/java");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("ok");
}
}
6、基本操作和eclipse差不多
查询:
方法 | 说明 |
---|---|
list() | 直接取数据并且缓存在内存中 |
listLazy() | 不直接取数据,使用的时候取,并且缓存在内存中,必须close |
listLazyUncached() | 不直接取数据,使用的时候取,必须close |
listIterator() | 不直接取数据,自己遍历,必须close |
条件查询:
1、eq:
List<Student> students = studentDao.queryBuilder()
.where(StudentDao.Properties.Name.eq("张三"))).list();
2、like:
List<Student> students = studentDao.queryBuilder().where(StudentDao.Properties.Name.like("%张%"))).list();
3、between:
List<Student> students = studentDao.queryBuilder().where(StudentDao.Properties.Age.between(20, 25)))).list();
4、> gt 和 < lt:
List<Student> students = studentDao.queryBuilder().where(StudentDao.Properties.Age.gt(20)list();
List<Student> students = studentDao.queryBuilder().where(StudentDao.Properties.Age.lt(25)list();
5、>= ge 和 <= le:
List<Student> students = studentDao.queryBuilder().where(StudentDao.Properties.Age.ge(20)list();
List<Student> students = studentDao.queryBuilder().where(StudentDao.Properties.Age.le(25)list();
7、排序
// 升序
List<Student> students = studentDao.queryBuilder().orderAsc(StudentDao.Properties.Age).list();
// 降序
List<Student> students = studentDao.queryBuilder().orderDesc(StudentDao.Properties.Age).list();
8、多线程:
final Query<Student> query = studentDao.queryBuilder().build();
new Thread(){
@Override
public void run() {
students = query.forCurrentThread().list();
}
}.start();
……
SQL查询:
List<Student> students = studentDao.queryBuilder().where(new WhereCondition.StringCondition("CLASS_ID IN (SELECT _ID FROM CLAS WHERE NAME LIKE '%"+ studentClass + "%' )").list();