您的位置:首页 > 移动开发 > Android开发

GreenDao 学习

2016-12-09 22:00 134 查看
源码

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


页面:





源码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android GreenDao