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

GreenDao 初步使用

2016-10-10 19:54 225 查看
一、环境

官网:http://greenrobot.org/greendao/

下载 jar

greenDao.jar: http://search.maven.org/#search%7Cga%7C1%7CgreenDao
freemarker: http://mvnrepository.com/artifact/org.freemarker/freemarker
二、GreenDao 相关

第三方orm:OrmLite、SugarORM、Active Android、Realm 、GreenDAO

greenDAO的主要设计目标:

最大性能(最快的Android ORM)
易于使用API
高度优化
最小内存消耗

三、使用

1.首先需要新建一个java工程来生成DAO类文件,该工程需要导入greendao-generator.jar和freemarker.jar文件到项目中。

public static void main(String[] args) throws Exception {
Schema schema = new Schema(2, "com.client.database.im");
addMessage(schema);
new DaoGenerator().generateAll(schema, "./src-gen");
}

private static void addMessage(Schema schema) {
Entity conversation = schema.addEntity("Conversations");
conversation.addIdProperty();
conversation.addStringProperty("className");
conversation.addIntProperty("conversation_type").notNull();

Entity messages = schema.addEntity("Messages");
messages.addIdProperty();
Property conversation_ID = messages.addLongProperty("conversation_ID")
.notNull().getProperty();
messages.addToOne(conversation, conversation_ID);
}


2.app中使用时建议创建一个辅助类,管理DaoMater和每个表的DAO.

package com.kele.greendao.db;

import org.greenrobot.greendao.query.QueryBuilder;

import android.content.Context;

import com.kele.greendao.model.ConversationsDao;
import com.kele.greendao.model.DaoMaster;
import com.kele.greendao.model.DaoMaster.OpenHelper;
import com.kele.greendao.model.DaoSession;
import com.kele.greendao.model.Messages;
import com.kele.greendao.model.MessagesDao;

public class DBHelper {
private static DBHelper instance;
private static Context mContext;

private static DaoMaster daoMaster;
private static DaoSession daoSession;
private ConversationsDao conversationsDao;
private MessagesDao messagesDao;

/**
* 取得DaoMaster
*
* @param context
* @return
*/
public static DaoMaster getDaoMaster(Context context) {
if (daoMaster == null) {
OpenHelper helper = new DaoMaster.DevOpenHelper(context,
"im-db.db", null);
daoMaster = new DaoMaster(helper.getWritableDatabase());
}
return daoMaster;
}

/**
* 取得DaoSession
*
* @param context
* @return
*/
public static DaoSession getDaoSession(Context context) {
if (daoSession == null) {
if (daoMaster == null) {
daoMaster = getDaoMaster(context);
}
daoSession = daoMaster.newSession();
}
return daoSession;
}

private DBHelper() {
}

public static void init(Context context) {
mContext = context;
instance = new DBHelper();
// 数据库对象
DaoSession daoSession = getDaoSession(mContext);
instance.setMessagesDao(daoSession.getMessagesDao());
instance.setConversationsDao(daoSession.getConversationsDao());

}

public static DBHelper getInstance() {
return instance;
}

public ConversationsDao getConversationsDao() {
return conversationsDao;
}

public void setConversationsDao(ConversationsDao conversationsDao) {
this.conversationsDao = conversationsDao;
}

public MessagesDao getMessagesDao() {
return messagesDao;
}

public void setMessagesDao(MessagesDao messagesDao) {
this.messagesDao = messagesDao;
}

public int getAllMessageNumByConversationID(Long id) {
QueryBuilder<Messages> qb = messagesDao.queryBuilder();
qb.where(com.kele.greendao.model.MessagesDao.Properties.Conversation_ID
.eq(id));
return (int) qb.buildCount().count();
}
}


四、项目Demo

Demo: http://download.csdn.net/detail/keleeat/9649988
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android GreenDao