greendao 简单来说 就是把数据库化作 对类的管理了 绕开了sql语句
既然是化作了对类的管理,那就要有实体类 和 管理类,
实体类和 管理类 最好提前用java工程生成。
所以
步骤一,类文件的生成 ,idea eclipse 创建个java工程就行。 // TODO android 单元测试没具体测试,估计也能行。
import de.greenrobot.daogenerator.DaoGenerator;
import de.greenrobot.daogenerator.Entity;
import de.greenrobot.daogenerator.Schema;
// libs里2个依赖包,别乱换,版本差距大了会导致编译失败。
public class Main {
public static void main(String[] args) {
// System.out.println("Hello World!");
// 这里直接写成要用到的android工程的类名
// 这样往android工程中移植的时候直接复制目录就行了
Schema schema = new Schema(1,"com.slyoko.mymakedao.model");
// 要添加几个表,照着写几个方法就行
addContact(schema);
addChatMsg(schema);
// 还有写其他设置,没大用处,不写也行
schema.setDefaultJavaPackageDao("com.slyoko.mymakedao.dao");
try {
// 生成文件
new DaoGenerator().generateAll(schema,"src");
} catch (Exception e) {
e.printStackTrace();
}
}
private static void addContact(Schema schema) {
Entity contact = schema.addEntity("Contact");// Contact类名默认就是表名
contact.addIdProperty().autoincrement().primaryKey();
contact.addLongProperty("memberid").notNull();
contact.addLongProperty("contactid").notNull();
contact.addStringProperty("email").notNull();
contact.addStringProperty("name").notNull();
contact.addStringProperty("headmid").notNull();
contact.addStringProperty("headsmall").notNull();
contact.addDateProperty("registetime").notNull();
contact.addDateProperty("createtime").notNull();
contact.addStringProperty("pinyin").notNull();
}
// 第二张表
private static void addChatMsg(Schema schema) {
Entity chat = schema.addEntity("ChatMsg"); // 添加新的表ChatMsg
chat.addIdProperty().autoincrement().primaryKey();
chat.addLongProperty("memberid").notNull();
chat.addLongProperty("contactid").notNull();
chat.addStringProperty("chatmsg").notNull();
chat.addDateProperty("chattime").notNull();
chat.addIntProperty("chattype").notNull();
chat.addIntProperty("isreceive").notNull();
chat.addIntProperty("status").notNull();
}
}
步骤二,greendao在android中的应用
这个暂时不写了,方法在在下面链接里看。
参考资料:
http://blog.csdn.net/krislight/article/details/9391455 // 封装好,说封装来自官网建议,没看到这个建议,看来回头有时间了还要好好看看官网了
http://glblong.blog.51cto.com/3058613/1354953 // 增删改查,各种全
http://www.cnblogs.com/lechance/p/4373196.html // 包含情况多
http://blog.csdn.net/h3c4lenovo/article/details/43566169 // 讲的也不少,就是感觉有点乱
http://blog.csdn.net/u012565107/article/details/21546829 // 一个对比测试例子
http://my.oschina.net/cheneywangc/blog/196354?fromerr=Nq8Yxt6S // 官网的前几篇引导说明翻译过来大致也就是这个样子了
我的带jar包的java工程备份源码:xxxxx 等审核过了再说。
// TODO
1、好好看官网
2、整个实际例子把 步骤二 补上
2016/01/01更新:
http://blog.csdn.net/krislight/article/details/9391455 android工程里 BaseApplication封装有问题。
daoMaster是从外部set get获取的。存在程序意外结束返回空指针的情况。
最好是直接在onCreate里初始化了,否则 写成static也不是很保险。
这个是在看文章《不要在Android的Application对象中缓存数据!》想到的,
文章链接:http://www.jianshu.com/p/83f0046bc310