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();