고래씌
[Spring] 10-2. 채팅방 참여, 인원수 증가, 메세지 조회 본문
1. 채팅방참여, 인원수 증가, 메세지 조회
=> views/chat폴더아래에 chatRoom.jsp 파일 생성
=> 채팅방 배경화면 추가를 위해 아래와 같이 추가
▶ chatRoom.jsp
▶ ChatController.java
☞ CHAT_ROOM_JOIN안에 참여한 채팅방번호(chatRoomNo)와 현재 참여한 회원번호(userNo)를 담아서 INSERT(참여인원수 증가시키기 위해서)
☞ 채팅방 참여(isnert)후, 해당 채팅방의 채팅메세지 조회(select)
=> 맨위에 chatRoomNo 추가함. chatRoomNo은 세션으로 데이터 이관하기 위해서 추가한다!
▶ ChatService.java
List<ChatMessage> joinChatRoom(ChatRoomJoin join);
▶ ChatServiceImpl.java
@Override
public List<ChatMessage> joinChatRoom(ChatRoomJoin join) {
// Chat_ROOM_JOIN에 데이터 INSERT 후,
// 채팅메세지 목록 조회후 반환
List<ChatMessage> list = null;
// 1. 현재 회원이 해당 채팅방에 참여하고 있는지 확인(select)
// int result = dao.joinCheck(join);
//
// // 2. 참여하고 있지 않다면 참여(insert)
// if(result == 0) {
// result = dao.joinChatRoom(join);
// }
int result = 1;
try {
result = dao.joinChatRoom(join);
}catch(Exception e) {
// 에러가 발생시
e.printStackTrace();
}
// 채팅메세지 조회후 반환
if(result > 0) {
list = dao.selectChatMessage(join.getChatRoomNo());
}
return list;
}
▶ ChatDao.java
☞ 각 해당하는 메소드 3개를 생성
// 채팅방 참여 여부확인
public int joinCheck(ChatRoomJoin join) {
return sqlSession.selectOne("chatMapper.joinCheck", join);
}
// 채팅방 메시지
public int joinChatRoom(ChatRoomJoin join) {
return sqlSession.insert("chatMapper.joinChatRoom", join);
}
// 채팅방 메시지 조회
public List<ChatMessage> selectChatMessage(int chatRoomNo) {
return sqlSession.selectList("chatMapper.selectChatMessage", chatRoomNo);
}
▶ chat-mapper.xml
<!-- 채팅방 참여여부 확인 -->
<!-- 사용자의 참여를 관여하는 테이블이 CHAT_ROOM_JOIN임 -->
<select id="joinCheck" parameterType="chatRoomJoin" resultType="int">
SELECT
COUNT(*)
FROM CHAT_ROOM_JOIN
WHERE CHAT_ROOM_NO = #{chatRoomNo} AND USER_NO = #{userNo}
</select>
<!-- 채팅방 참여하기 -->
<insert id="joinChatRoom" parameterType="chatRoomJoin">
INSERT INTO CHAT_ROOM_JOIN
VALUES(#{userNo}, #{chatRoomNo})
</insert>
<!-- 채팅방 메세지 조회 -->
<select id="selectChatMessage" parameterType="int" resultType="chatMessage">
SELECT
MESSAGE,
CREATE_DATE,
USER_NAME,
USER_NO,
CM_NO
FROM CHAT_MESSAGE
JOIN MEMBER USING(USER_NO)
WHERE CHAT_ROOM_NO = #{chatRoomNo}
ORDER BY CM_NO
</select>
▶ 결과
'Server > Spring' 카테고리의 다른 글
[Spring] 10-4. 채팅방 메세지 통신 (F5를 누르지않아도 바로 생성되도록 작업) (0) | 2024.01.30 |
---|---|
[Spring] 10-3. 채팅방 통신(채팅방 메세지 추가) (0) | 2024.01.30 |
[Spring] 10-1. 채팅방 목록, 채팅방 생성 (0) | 2024.01.29 |
[Spring] 9. 댓글 목록, 등록, 수정, 삭제(비동기식) (0) | 2024.01.26 |
[Spring] 8-5. 게시판 수정하기(+ 사진삭제, 사진수정, 사진추가) (0) | 2024.01.26 |