会议室数据库加载聊天室时获取最后的聊天室消息

翁卡

我正在开发一个聊天应用程序,其中消息被保存在离线室数据库中

我有两张桌子

Contact
   - contact_id
   - contact_name
   - about

ChatMessage
   - contact_id
   - content
   - received_at

在聊天屏幕上,我通过查询联系人表来显示最近的聊天记录,但是我试图显示最近的聊天记录,因此更好的方法是查询ChatMessage表以获取唯一的最新消息并检索联系人信息(如姓名)

所以我实施了一种非常糟糕的方法(可能是最糟糕的方法),其中包括

1.获取所有聊天消息

2.按contact_id与最近的聊天分组

3.在for循环查询中,获取联系人行,并将名称附加到主要对象列表中

4.在回收站视图中显示列表

我想知道是否有更好的方法可以做到这一点

我认为关系或联接可以提供帮助,但是我不知道它们或它们在房间DB中的实现

任何帮助将不胜感激

谢尔盖·季霍诺夫

检查Java中的下一种方法(但对Kotlin来说,想法是相同的):

  1. message_id(主键)添加到您的ChatMessage实体。
  2. 除了ContactChatMessage实体,再添加一个类LastMessages(不是实体,只是POJO):
public class LastMessage {

    @Embedded
    public ChatMessage lastMessage;

    @Relation(
        parentColumn = "contact_id",
        entityColumn = "contact_id"
    )
    public Contact contact; 

}
  1. 在您的dao中添加下一个方法:
@Transaction
@Query("SELECT * FROM chat_message AS cm JOIN (SELECT contact_id, max(received_at) AS received_at FROM chat_message GROUP BY contact_id) AS cm_last ON cm_last.contact_id = cm.contact_id AND cm_last.received_at = cm.received_at")
public List<LastMessage> getLastMessages();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

热门构建 Firebase 聊天室数据库?

来自分类Dev

如何显示从数据库接收的一系列消息,用于聊天室

来自分类Dev

聊天室成员列表

来自分类Dev

linphone在聊天室中使用SIP消息发送消息

来自分类Dev

AJAX,jQuery,用于聊天室的javascript

来自分类Dev

Akka Java TCP聊天室

来自分类Dev

Lync UCWA是否支持聊天室?

来自分类Dev

单击进入聊天室时应用程序崩溃

来自分类Dev

当两个用户都在聊天室中时,消息仍被标记为未读

来自分类Dev

当两个用户都在聊天室中时,消息仍被标记为未读

来自分类Dev

如何使用Quickblox聊天室进行1:1聊天?

来自分类Dev

如何通过Rest API在ejabberd中创建聊天室?

来自分类Dev

nodejs聊天室对象预期第一行

来自分类Dev

Linux中C / Socket编程中的聊天室

来自分类Dev

快速可靠地更新聊天室的最佳方法?

来自分类Dev

如何使用sockjs建立私人聊天室?

来自分类Dev

如何在聊天室中添加表情符号?

来自分类Dev

支持多个虚拟聊天室(例如,使用NServiceBus)

来自分类Dev

创建聊天室应用最终以“无效的文档参考”

来自分类Dev

在Pidgin的联系人列表中保存聊天室

来自分类Dev

无法使用asmack获得已加入的聊天室

来自分类Dev

使用API打开聊天室-Scringo Android

来自分类Dev

在ASP.net中创建聊天室

来自分类Dev

如何使用sockjs建立私人聊天室?

来自分类Dev

Delphi XE6 Indy聊天室

来自分类Dev

可扩展的聊天室使用(playframework akka和websocket)

来自分类Dev

每个聊天室javascript的socket.io端口

来自分类Dev

如何在聊天室中添加表情符号?

来自分类Dev

NodeJS使用setInterval作为聊天室计时器

Related 相关文章

热门标签

归档