📄 messagemanager.java
字号:
package com.bjsxt.messages.manager;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import com.bjsxt.messages.DBUtils;
import com.bjsxt.messages.MessageException;
import com.bjsxt.messages.model.Message;
public class MessageManager {
private static MessageManager messageManager;
private MessageManager(){}
public synchronized static MessageManager newInstance(){
if(messageManager == null){
messageManager = new MessageManager();
}
return messageManager;
}
/**
* 发送消息
* @param senderId 发送者ID
* @param receiverId 接受者ID
* @param title 标题
* @param content 内容
*/
public void sendMessage(int senderId,int receiverId,String title,String content){
Connection conn = null;
Statement stmt = null; //查找操作
ResultSet rs1 = null;
ResultSet rs2 = null;
PreparedStatement ps = null; //保存操作
try {
conn = DBUtils.getConnection();
conn.setAutoCommit(false);
//1、查找发送者
String senderName = "";
stmt = conn.createStatement();
rs1 = stmt.executeQuery("select username from t_user where id = "+senderId);
if(rs1.next()){
senderName = rs1.getString(1);
}else{
//提示无法找到发送者的信息,应该向用户提示错误
throw new MessageException("send.sender_notfound","无法找到发送者的信息");
}
//2、查找接收者
String receiverName = "";
rs2 = stmt.executeQuery("select username from t_user where id = "+receiverId);
if(rs2.next()){
receiverName = rs2.getString(1);
}else{
throw new MessageException("send.receiver_notfound","无法找到接收者的信息");
}
//3、保存消息
ps = conn.prepareStatement("insert into t_message values (null,?,?,?,?,?,?,?,?)");
ps.setInt(1,senderId);
ps.setString(2,senderName);
ps.setInt(3,receiverId);
ps.setString(4,receiverName);
ps.setString(5,title);
ps.setString(6,content);
ps.setBoolean(7,false);
ps.setBoolean(8,false); //发送消息
ps.addBatch();
ps.setInt(1,senderId);
ps.setString(2,senderName);
ps.setInt(3,receiverId);
ps.setString(4,receiverName);
ps.setString(5,title);
ps.setString(6,content);
ps.setBoolean(7,false);
ps.setBoolean(8,true); //发送消息
ps.addBatch();
ps.executeBatch();
conn.commit();
} catch (SQLException e) {
e.printStackTrace();
try {
conn.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
throw new MessageException("send.error","执行数据库出现异常!");
} finally{
DBUtils.closeResultSet(rs1);
DBUtils.closeResultSet(rs2);
DBUtils.closeStatement(ps);
DBUtils.closeStatement(stmt);
DBUtils.closeConnection(conn);
}
}
/**
* 删除消息
* @param messageId
*/
public void deleteMessage(int messageId){
Connection conn = null;
Statement stmt = null;
try {
conn = DBUtils.getConnection();
conn.setAutoCommit(false);
stmt = conn.createStatement();
stmt.executeUpdate("delete from t_message where id = "+messageId);
conn.commit();
} catch (SQLException e) {
e.printStackTrace();
try {
conn.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
throw new MessageException("error","执行数据库出现异常!");
} finally{
DBUtils.closeStatement(stmt);
DBUtils.closeConnection(conn);
}
}
/**
* 查询userId所指定的用户的未读消息
* @param userId 用户ID
* @return
*/
public List<Message> findAllUnreadMessages(int userId){
Connection conn = null;
ResultSet rs1 = null;
PreparedStatement ps = null;
try {
conn = DBUtils.getConnection();
ps = conn.prepareStatement("select * from t_message where receiverId = ? and hasRead = ? and receiveOrSend = ?");
ps.setInt(1,userId);
ps.setBoolean(2,false);
ps.setBoolean(3,true); //接收的消息
rs1 = ps.executeQuery();
List<Message> msgs = new ArrayList<Message>();
while(rs1.next()){
Message msg = new Message();
msg.setId(rs1.getInt("id"));
msg.setSenderId(rs1.getInt("senderId"));
msg.setSenderName(rs1.getString("senderName"));
msg.setReceiverId(rs1.getInt("receiverId"));
msg.setReceiverName(rs1.getString("receiverName"));
msg.setTitle(rs1.getString("title"));
msg.setContent(rs1.getString("content"));
msg.setHasRead(rs1.getBoolean("hasRead"));
msgs.add(msg);
}
return msgs;
} catch (SQLException e) {
e.printStackTrace();
try {
conn.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
throw new MessageException("find.error","执行数据库查询操作出现异常!");
} finally{
DBUtils.closeResultSet(rs1);
DBUtils.closeStatement(ps);
DBUtils.closeConnection(conn);
}
}
/**
* 查询userId对应用户的所有已读消息列表
* @param userId
* @return
*/
public List<Message> findAllReadedMessages(int userId){
Connection conn = null;
ResultSet rs1 = null;
PreparedStatement ps = null;
try {
conn = DBUtils.getConnection();
ps = conn.prepareStatement("select * from t_message where receiverId = ? and hasRead = ? and receiveOrSend = ?");
ps.setInt(1,userId);
ps.setBoolean(2,true);
ps.setBoolean(3,true); //接收的消息
rs1 = ps.executeQuery();
List<Message> msgs = new ArrayList<Message>();
while(rs1.next()){
Message msg = new Message();
msg.setId(rs1.getInt("id"));
msg.setSenderId(rs1.getInt("senderId"));
msg.setSenderName(rs1.getString("senderName"));
msg.setReceiverId(rs1.getInt("receiverId"));
msg.setReceiverName(rs1.getString("receiverName"));
msg.setTitle(rs1.getString("title"));
msg.setContent(rs1.getString("content"));
msg.setHasRead(rs1.getBoolean("hasRead"));
msgs.add(msg);
}
return msgs;
} catch (SQLException e) {
e.printStackTrace();
try {
conn.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
throw new MessageException("find.error","执行数据库查询操作出现异常!");
} finally{
DBUtils.closeResultSet(rs1);
DBUtils.closeStatement(ps);
DBUtils.closeConnection(conn);
}
}
/**
* 查询userId对应用户的所有消息列表
* @param userId
* @return
*/
public List<Message> findAllReceiveMessages(int userId){
Connection conn = null;
ResultSet rs1 = null;
PreparedStatement ps = null;
try {
conn = DBUtils.getConnection();
ps = conn.prepareStatement("select * from t_message where receiverId = ? and receiveOrSend = ?");
ps.setInt(1,userId);
ps.setBoolean(2,true); //接收的消息
rs1 = ps.executeQuery();
List<Message> msgs = new ArrayList<Message>();
while(rs1.next()){
Message msg = new Message();
msg.setId(rs1.getInt("id"));
msg.setSenderId(rs1.getInt("senderId"));
msg.setSenderName(rs1.getString("senderName"));
msg.setReceiverId(rs1.getInt("receiverId"));
msg.setReceiverName(rs1.getString("receiverName"));
msg.setTitle(rs1.getString("title"));
msg.setContent(rs1.getString("content"));
msg.setHasRead(rs1.getBoolean("hasRead"));
msgs.add(msg);
}
return msgs;
} catch (SQLException e) {
e.printStackTrace();
try {
conn.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
throw new MessageException("find.error","执行数据库查询操作出现异常!");
} finally{
DBUtils.closeResultSet(rs1);
DBUtils.closeStatement(ps);
DBUtils.closeConnection(conn);
}
}
/**
* 查找userId对应的用户所发送的所有消息
* @param userId
* @return
*/
public List<Message> findAllSendMessages(int userId){
Connection conn = null;
ResultSet rs1 = null;
PreparedStatement ps = null;
try {
conn = DBUtils.getConnection();
ps = conn.prepareStatement("select * from t_message where senderId = ? and receiveOrSend = ?");
ps.setInt(1,userId);
ps.setBoolean(2,false); //发送的消息
rs1 = ps.executeQuery();
List<Message> msgs = new ArrayList<Message>();
while(rs1.next()){
Message msg = new Message();
msg.setId(rs1.getInt("id"));
msg.setSenderId(rs1.getInt("senderId"));
msg.setSenderName(rs1.getString("senderName"));
msg.setReceiverId(rs1.getInt("receiverId"));
msg.setReceiverName(rs1.getString("receiverName"));
msg.setTitle(rs1.getString("title"));
msg.setContent(rs1.getString("content"));
msg.setHasRead(rs1.getBoolean("hasRead"));
msgs.add(msg);
}
return msgs;
} catch (SQLException e) {
e.printStackTrace();
try {
conn.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
throw new MessageException("find.error","执行数据库查询操作出现异常!");
} finally{
DBUtils.closeResultSet(rs1);
DBUtils.closeStatement(ps);
DBUtils.closeConnection(conn);
}
}
/**
* 读取某条消息
* @param messageId
* @return
*/
public Message readMessage(int messageId){
Connection conn = null;
ResultSet rs1 = null;
PreparedStatement ps = null;
PreparedStatement ps1 = null;
try {
conn = DBUtils.getConnection();
conn.setAutoCommit(false);
ps = conn.prepareStatement("select * from t_message where id = ?");
ps.setInt(1,messageId);
rs1 = ps.executeQuery();
Message msg = new Message();
while(rs1.next()){
msg.setSenderId(rs1.getInt("senderId"));
msg.setSenderName(rs1.getString("senderName"));
msg.setReceiverId(rs1.getInt("receiverId"));
msg.setReceiverName(rs1.getString("receiverName"));
msg.setTitle(rs1.getString("title"));
msg.setContent(rs1.getString("content"));
msg.setHasRead(rs1.getBoolean("hasRead"));
}
//更新读取状态
if(!msg.isHasRead()){
ps1 = conn.prepareStatement("update t_message set hasRead = ? where id = ?");
ps1.setBoolean(1,true);
ps1.setInt(2,messageId);
ps1.executeUpdate();
}
conn.commit();
return msg;
} catch (SQLException e) {
e.printStackTrace();
try {
conn.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
throw new MessageException("find.error","执行数据库查询操作出现异常!");
} finally{
DBUtils.closeResultSet(rs1);
DBUtils.closeStatement(ps);
DBUtils.closeStatement(ps1);
DBUtils.closeConnection(conn);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -