int rows = chatListService.findCountByUserId(senderUser.getId(),recipientUser.getId()); if (rows == 0){ List<ChatList> chatListList = new ArrayList<ChatList>(); //记录发送人信息 ChatList senderChatList = new ChatList(); senderChatList.setIsDelete(false); senderChatList.setCreatedAt(new Date()); senderChatList.setCreatedBy(String.valueOf(senderUser.getId())); senderChatList.setRecipientId(recipientUser.getId()); senderChatList.setName(recipientUser.getUserName()); senderChatList.setAvatar(recipientUser.getAvatar());
时间: 2024-02-26 21:54:39 浏览: 12
这段代码的作用是在保存聊天记录时,同时更新聊天列表。首先,通过调用 chatListService.findCountByUserId(senderUser.getId(),recipientUser.getId()) 方法获取指定两个用户之间的聊天记录总数。如果这个总数为 0,说明这两个用户之间还没有聊天记录,需要插入一条新的聊天列表记录。接下来,定义了一个 chatListList 变量,用于保存需要插入到聊天列表中的记录。然后,创建一个 ChatList 对象 senderChatList,用于保存发送人的信息。这个对象的各个属性分别表示:是否已删除、创建时间、创建人、接收人 ID、接收人名称、接收人头像。具体的赋值过程已经在代码中完成了。接下来的代码逻辑与 senderChatList 类似,用于创建接收人的信息对象和插入到 chatListList 中。最后,将 chatListList 中的所有记录保存到数据库中,完成聊天列表的更新。
相关问题
LambdaUpdateWrapper<T> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();lambdaUpdateWrapper.eq(T::getColumnName, value); // 设置更新条件// 设置需要更新的属性值int rows = baseMapper.update(entity, lambdaUpdateWrapper); // 执行更新操作 entity如果有属性值为空的,会执行更行吗
如果 LambdaUpdateWrapper 中设置了更新条件,但实体对象中对应的属性值为 null,那么 MyBatis-Plus 会将该属性更新为 null。如果要避免更新为 null,可以在更新前进行非空判断,只对非空属性进行更新。例如:
```
T entity = new T();
entity.setId(id); // 设置实体对象的 ID
// 设置其他需要更新的属性值
if (entity.getProperty() != null) {
LambdaUpdateWrapper<T> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
lambdaUpdateWrapper.eq(T::getId, id); // 设置更新条件
lambdaUpdateWrapper.set(T::getProperty, entity.getProperty()); // 设置需要更新的属性值
int rows = baseMapper.update(entity, lambdaUpdateWrapper); // 执行更新操作
}
```
在这个例子中,如果实体对象的 property 属性值为 null,那么不会执行更新操作。只有当 property 不为 null 时,才会进行更新操作。
if (rows == 0){ List<ChatList> chatListList = new ArrayList<ChatList>(); //记录发送人信息 ChatList senderChatList = new ChatList(); senderChatList.setIsDelete(false); senderChatList.setCreatedAt(new Date()); senderChatList.setCreatedBy(String.valueOf(senderUser.getId())); senderChatList.setRecipientId(recipientUser.getId()); senderChatList.setName(recipientUser.getUserName()); senderChatList.setAvatar(recipientUser.getAvatar());
这段代码的主要作用是:当 `rows` 等于0时,创建一个 `ChatList` 列表,并将发送人信息添加到列表中。具体来说,这个列表用来记录与当前用户有过聊天记录的所有用户信息。
代码中 `List<ChatList> chatListList = new ArrayList<ChatList>();` 创建了一个空的 `ChatList` 列表。
`ChatList` 是一个类,它包含了聊天列表中每个条目的信息,如发送人ID,接收人ID,发送人名称,头像等信息。
`ChatList senderChatList = new ChatList();` 创建了一个新的 `ChatList` 对象,用来记录当前发送人信息。
`senderChatList.setIsDelete(false);` 设置 `isDelete` 属性为 `false`,表示该用户的聊天记录未被删除。
`senderChatList.setCreatedAt(new Date());` 设置 `createdAt` 属性为当前时间,表示该用户的聊天记录创建时间为当前时间。
`senderChatList.setCreatedBy(String.valueOf(senderUser.getId()));` 设置 `createdBy` 属性为当前发送人的ID。
`senderChatList.setRecipientId(recipientUser.getId());` 设置 `recipientId` 属性为当前接收人的ID。
`senderChatList.setName(recipientUser.getUserName());` 设置 `name` 属性为当前接收人的用户名。
`senderChatList.setAvatar(recipientUser.getAvatar());` 设置 `avatar` 属性为当前接收人的头像。
最终,这个 `senderChatList` 对象会被添加到 `chatListList` 中,以记录当前发送人与接收人之间的聊天记录。