GreenDao使用小记

首先是bean类

/**
* Created by HJR36 on 2016/11/2.
* 互动消息bean类
*/
@Entity(
nameInDb = “message_db”
)
public class ChangemessageBean {
/**
* circleText :
* targetType : 1
* circleId : 9234823812341234
* dynamicType : 1
* userIcon : http://www.baidu.com/asdf.jpg
* userName : 切克闹
* circleImgUrl : http://www.baidu.com
* userId : us2134234
* commentContent :
*/
@Id(autoincrement = true)
@Index(unique = true) // 建立索引
private Long messageId;//消息Id
/*圈子文字内容/
public String circleText;
public int targetType;
public String circleId;
public int dynamicType;//活动圈类型
public String circleImgUrl;
public String userName;
public String commentContent;
public String dataTime;
public String userImg;
public boolean isLook=false;
}
(写好之后,点击编译,数据库会自动生成表)

数据库管理类
/**
* Created by HJR36 on 2016/11/2.
* 互动消息的数据库管理类
*/

public class ChangeMessageManager {
private ChangemessageBeanDao mChangemessageBeanDao;
private static ChangeMessageManager changeMessageManager = null;
private static Context context;

private ChangeMessageManager(Context mContext) {
    try {
        mChangemessageBeanDao = HtDBManager.getInstance(mContext).getDaoSession().getChangemessageBeanDao();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

public static ChangeMessageManager getInstance(Context mContext) {
    context=mContext;
    if (changeMessageManager == null) {
        changeMessageManager = new ChangeMessageManager(context);
    }

    return changeMessageManager;
}

/**
 * 查询所有的互动消息
 *
 * @return
 */
public List<ChangemessageBean> loadAllChangeMessage() {
    List<ChangemessageBean> list=mChangemessageBeanDao.loadAll();
    //按时间倒序排序
    Collections.reverse(list);
    return list;
}

/**
 * 分页查询所有的互动消息
 * @return
 */
public List<ChangemessageBean> loadAllChangeMessageAsPage(int page) {
    QueryBuilder qb = mChangemessageBeanDao.queryBuilder();
    List<ChangemessageBean> list = qb
            .orderDesc(ChangemessageBeanDao.Properties.MessageId).offset((page-1) * 10).limit(10).list();
    return list;
}

/**
 * 删除所有的互动消息
 */
public void deleteChangeMessageList() {
    mChangemessageBeanDao.deleteAll();
}

/**
 * 通过 Id 查找互动消息
 *
 * @return
 */
public ChangemessageBean findChangemessageById(long id) {
    return mChangemessageBeanDao.queryBuilder().where(ChangemessageBeanDao.Properties.MessageId.eq(id)).unique();
}

/**
 * 插入数据,并返回id
 *
 * @param changemessage
 * @return
 */
public long insertOrReplaceChangemessage(ChangemessageBean changemessage) {
    return mChangemessageBeanDao.insertOrReplace(changemessage);
}

/**
 * 判断是否存在
 *
 * @param longid
 */
public boolean judgeExist(long longid) {
    ChangemessageBean changemessageBean = findChangemessageById(longid);
    if (changemessageBean != null) {
        return true;
    }
    return false;
}

/**
 * 用过 Id 删除互动消息
 *
 * @param longid
 */
public void delete(long longid) {
    ChangemessageBean changemessage = mChangemessageBeanDao
            .queryBuilder().where(ChangemessageBeanDao.Properties.MessageId.eq(longid)).unique();
    if (changemessage != null) {
        mChangemessageBeanDao.delete(changemessage);
    }
}

}

插入操作
//处理消息部分
ChangemessageBean changemessage=new ChangemessageBean();
changemessage.setCommentContent(commentContent);
changemessage.setCircleText(circleContent);
changemessage.setCircleId(targetId);
changemessage.setCircleImgUrl(imageUrl);
changemessage.setTargetType(Integer.parseInt(type));
changemessage.setDataTime(dateTime);
//处理用户部分
changemessage.setUserName(userName);
changemessage.setUserImg(userImg);
changeMessageManager.insertOrReplaceChangemessage(changemessage);

从数据库读取数据(做了分页查询)

/**
* 从本地数据库拿通知
*/
public void getChangeMesssage() {
if (currentPage == 1) {
swipeRefreshLayout.setRefreshing(false);
} else {
mCompatlv.stopLoadMore();
}
changemessageList = changeMessageManager.loadAllChangeMessageAsPage(currentPage);
if (changemessageList!=null && changemessageList.size() > 0){
mNull.setVisibility(View.GONE);
if (currentPage == 1) {
mAdapter.clearAll();
mAdapter.add(changemessageList);
} else {
mAdapter.add(changemessageList);
}
currentPage++;
if (changemessageList.size() < 10) {
mCompatlv.setPullLoadEnable(false);
} else {
mCompatlv.setPullLoadEnable(true);
}
}else {
if (currentPage == 1) {
displayNulContent();
}
}
mAdapter.notifyDataSetChanged();
}
成功截图

Protobuf是一种高效的序列化协议,可以用于数据交换和数据存储。它的主要优势是大小小,速度快,可扩展性强。下面是使用Protobuf的一些小记: 1. 定义消息格式 首先,需要定义消息格式,以便Protobuf可以将数据序列化和反序列化。消息格式定义在.proto文件中,使用protobuf语言编写。例如,下面是一个简单的消息格式定义: ``` syntax = "proto3"; message Person { string name = 1; int32 age = 2; } ``` 这个消息格式定义了一个名为Person的消息,包含两个字段:name和age。 2. 生成代码 一旦消息格式定义好,就可以使用Protobuf编译器生成代码。编译器将根据消息格式定义生成相应的代码,包括消息类、序列化和反序列化方法等。可以使用以下命令生成代码: ``` protoc --java_out=. message.proto ``` 这将生成一个名为message.pb.java的Java类,该类包含Person消息的定义以及相关方法。 3. 序列化和反序列化 一旦生成了代码,就可以使用Protobuf序列化和反序列化数据。例如,下面是一个示例代码,将一个Person对象序列化为字节数组,并将其反序列化为另一个Person对象: ``` Person person = Person.newBuilder() .setName("Alice") .setAge(25) .build(); byte[] bytes = person.toByteArray(); Person deserializedPerson = Person.parseFrom(bytes); ``` 这个示例代码创建了一个Person对象,将其序列化为字节数组,然后将其反序列化为另一个Person对象。在这个过程中,Protobuf使用生成的代码执行序列化和反序列化操作。 以上是使用Protobuf的一些基本步骤和注意事项,希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值