diff --git a/WEB-INF/src/dao/MessageDAO.java b/WEB-INF/src/dao/MessageDAO.java
new file mode 100644
index 0000000000000000000000000000000000000000..39c7601611c8d5d94c9624ba752c730c2686f6d6
--- /dev/null
+++ b/WEB-INF/src/dao/MessageDAO.java
@@ -0,0 +1,60 @@
+package dao;
+
+import dto.Message;
+import dto.User;
+
+import java.sql.*;
+import java.util.ArrayList;
+import java.util.List;
+
+public class MessageDAO {
+    private Connection con;
+
+    public MessageDAO(){
+        this.con = new BDConnection().getConnection();
+    }
+
+    public Message getMessageByID(int id) throws SQLException {
+        Message message = null;
+        PreparedStatement stmt = this.con.prepareStatement("SELECT * FROM msg WHERE msgID = ?;");
+        try{
+            stmt.setInt(1, id);
+            ResultSet rs = stmt.executeQuery();
+            while(rs.next()){
+                int msgId = rs.getInt(1);
+                int userIdMsg = rs.getInt(2);
+                int threadId = rs.getInt(3);
+                String msg = rs.getString(4);
+
+                message = new Message(msgId,userIdMsg,threadId,msg);
+            }
+        } catch (SQLException sqle) {
+            sqle.getStackTrace();
+        }
+
+        return message;
+    }
+
+    public boolean isMessageLikedByUser(Message message, User user) throws SQLException {
+        PreparedStatement ps = this.con.prepareStatement("""
+                SELECT reaction FROM reactions 
+                WHERE userID_reactions = ?
+                AND msgID_reactions = ?
+                """);
+        try {
+            ps.setInt(1, user.getId());
+            ps.setInt(2, message.getMsgId());
+            ResultSet rs = ps.executeQuery();
+            while(rs.next()) {
+                if (rs.getBoolean("reaction")) {
+                    return true;
+                }
+                else return false;
+            }
+        }
+        catch (SQLException sqle) {
+            sqle.getStackTrace();
+        }
+        return false;
+    }
+}