基于SSM做站内消息系统(二)

基于SSM做站内消息系统(二)

java程序编写

上回写的是站内信的理论知识,相信很多人看起来会很枯燥无味,其实我自己也是这么觉得的。我一直在想怎么解决这个问题!如果有什么好的建议欢迎在评论区留言。一起探讨学习~

实体类的编写

package com.taotao.pojo;

import java.util.Date;

/**
 * 站内信消息之消息表
 * @author 盛
 *
 */
public class Messages {
	private Long id;//主键Id
	private Long sendId;//发送者
	private Long recId;//接收者
	private int messageStatus ;//当前消息状态(0未读,1已读,2删除)具体需求具体设计
	private Long contentId;//消息内容表Id
	private Date createTime;//创建时间
	public Date getCreateTime() {
		return createTime;
	}
	public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public Long getSendId() {
		return sendId;
	}
	public void setSendId(Long sendId) {
		this.sendId = sendId;
	}
	public Long getRecId() {
		return recId;
	}
	public void setRecId(Long recId) {
		this.recId = recId;
	}
	public int getMessageStatus() {
		return messageStatus;
	}
	public void setMessageStatus(int messageStatus) {
		this.messageStatus = messageStatus;
	}
	public Long getContentId() {
		return contentId;
	}
	public void setContentId(Long contentId) {
		this.contentId = contentId;
	}
	
	
	
}

以上字段只是通用字段,仍需根据具体需求制定具体字段~~

package com.taotao.pojo;

import java.util.Date;

/**
 * 站内信之消息内容表
 * @author 盛
 *
 */
public class MessageText {
	private Long id;//
	private String content;//消息内容
	private Long messageId;//消息表Id
	private Date createTime;//创建时间(可有可无,根据具体需求设定)
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getContent() {
		return content;
	}
	public void setContent(String content) {
		this.content = content;
	}
	public Long getMessageId() {
		return messageId;
	}
	public void setMessageId(Long messageId) {
		this.messageId = messageId;
	}
	public Date getCreateTime() {
		return createTime;
	}
	public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}
	

}

package com.taotao.pojo;

import java.util.Date;

/**
 * 站内信之用户系统消息表
 * @author 盛
 *
 */
public class UserMessage {
	private Long id;
	private Long messageId;//消息表Id
	private int status;//消息状态(0未读,1已读,2删除)
	private Date createTime;//创建时间
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public Long getMessageId() {
		return messageId;
	}
	public void setMessageId(Long messageId) {
		this.messageId = messageId;
	}
	public int getStatus() {
		return status;
	}
	public void setStatus(int status) {
		this.status = status;
	}
	public Date getCreateTime() {
		return createTime;
	}
	public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}
	
}

以上是站内信的三个实体类~~

dao层加mapper文件的编写

我这里的dao层用的是mybatis框架!

package com.taotao.mapper;

import java.util.List;
import java.util.Map;

import com.taotao.pojo.Messages;
/**
 * 站内信之消息表dao层
 * @author 盛
 *
 */
public interface MessagesMapper {
	public int add(Messages m);
	public int update(Messages m);
	public List<Messages> list(Map<String, Object> q);
}


```xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.taotao.mapper.MessagesMapper" >
  <insert id="add" parameterType="com.taotao.pojo.Messages">
  	insert into messages(sendId,recId,messageStatus,contentId,createTime)
  	VALUES(#{sendId},#{recId},#{messageStatus},#{contentId},#{createTime})
  </insert>
  <update id="update" parameterType="com.taotao.pojo.Messages">
  	update messages set sendId=#{sendId},recId=#{recId},messageStatus=#{messageStatus},
  	contentId=#{contentId},createTime=#{createTime} where id=#{id}
  </update>
  <select id="list" parameterType="Map" resultType="com.taotao.pojo.Messages">
  	select * from messages where 1=1
  	<if test="status!=null">
  		and status=#{status}
  	</if>
  	<if test="sendId!=null">
  		and sendId=#{sendId}
  	</if>
  	<if test="recId!=null">
  		and recId=#{recId}
  	</if>
  </select>
</mapper>

对于sql的查询我也只是写了简单的增删改查,仍需根据你具体想做什么样的需求具体设定!

package com.taotao.mapper;

import java.util.List;
import java.util.Map;

import com.taotao.pojo.MessageText;
import com.taotao.pojo.UserMessage;



/**
 * 站内信之用户系统消息dao层
 * @author 盛
 *
 */
public interface MessageTextMapper {
	public int add(UserMessage m);
	public int update(UserMessage m);
	public List<UserMessage> list(Map<String, Object> q);
}


<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.taotao.mapper.MessageTextMapper" >
  <insert id="add" parameterType="com.taotao.pojo.MessageText">
  	insert into messageText(content,messageId,createTime)
  	VALUES(#{content},#{messageId},#{createTime})
  </insert>
  <update id="update" parameterType="com.taotao.pojo.MessageText">
  	update messageText set content=#{content},messageId=#{messageId},createTime=#{createTime} where id=#{id}
  </update>
  <select id="list" parameterType="Map" resultType="com.taotao.pojo.MessageText">
  	select * from messageText where 1=1
  	<if test="messageId!=null">
  		and messageId=#{messageId}
  	</if>
  </select>
</mapper>
package com.taotao.mapper;

import java.util.List;
import java.util.Map;

import com.taotao.pojo.UserMessage;


/**
 * 站内信之用户系统消息dao层
 * @author 盛
 *
 */
public interface UserMessageMapper {
	public int add(UserMessage m);
	public int update(UserMessage m);
	public List<UserMessage> list(Map<String, Object> q);
	public List<UserMessage> findListMessage(Map<String, Object> q);
	public int getListMessage(Map<String, Object> q);
}

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.taotao.mapper.UserMessageMapper" >
  <insert id="add" parameterType="com.taotao.pojo.UserMessage">
  	insert into userMessage(messageId,status,createTime)
  	VALUES(#{messageId},#{status},#{createTime})
  </insert>
  <update id="update" parameterType="com.taotao.pojo.UserMessage">
  	update userMessage set messageId=#{messageId},status=#{status},
		createTime=#{createTime} where id=#{id}
  </update>
  <select id="list" parameterType="Map" resultType="com.taotao.pojo.UserMessage">
  	select * from userMessage where 1=1
  	<if test="status!=null">
  		and status=#{status}
  	</if>
  	<if test="messageId!=null">
  		and messageId=#{messageId}
  	</if>
  </select>
  <resultMap id="ExamSort" type="com.taotao.pojo.UserMessage">
		<id column="sc_id" property="id" />
		
		<result column="sc_status" property="status" />
		<result column="sc_messageId" property="messageId" />
		<result column="sc_createTime" property="createTime" />
		
		<association property="sysMessageText" javaType="com.taotao.pojo.MessageText">
			<id column="mt_id" property="id" />
			<result column="mt_content" property="content" />
		</association>
		<association property="Messages" javaType="com.taotao.pojo.Messages">
			<id column="m_id" property="id" />
			<result column="m_contentId" property="content" />
		</association>
	</resultMap>
	<select id="findListMessage" parameterType="Map" resultMap="ExamSort">
		select
		sc.id sc_id,sc.createTime sc_createTime,sc.messageId sc_messageId,sc.status sc_status,
		m.id m_id,m.contentId m_contentId,
		mt.id mt_id,mt.content mt_content
		from userMessage sc,messages m,messageText mt
		where 1 = 1 and m.contentId=mt.id AND sc.messageId=m.id
		
		<if test="recId !=null">
			and m.recId=#{recId}
		</if>
		<if test="messageStatus !=null">
			and m.messageStatus = #{messageStatus}
		</if>
		<if test="status !=null">
			
				and sc.status = #{status}
			
		</if>
		order by sc.status,sc.createTime DESC
		<if test="offset != null and pageSize != null">
			limit #{offset},#{pageSize}
		</if>
	</select>
	<select id="getListMessage" parameterType="Map" resultMap="ExamSort">
		select
		count(*)
		from userMessage sc,messages m,messageText mt
		where 1 = 1 and m.contentId=mt.id AND sc.messageId=m.id
		
		<if test="recId !=null">
			and m.recId=#{recId}
		</if>
		<if test="messageStatus !=null">
			and m.messageStatus = #{messageStatus}
		</if>
		<if test="status !=null">
				and sc.status = #{status}
		</if>
		order by sc.status,sc.createTime DESC
	</select>
</mapper>

这个用户消息系统有点特殊,它需要连表查询加上左查询,每当系统用户登录时要在消息表(message)中获取系统给用户发的消息。可以自己给系统一个唯一的标识符(如:8080这个代号代表系统)通过sql查询出来结果!
例如:
1)甲用户第一次登录这个网站,他在登录之前要获取系统之前所有发的公告通知等消息,sql要查询(message表)中的sendId字段【系统(8080)】然后再将这些数据插入到用户消息系统表(userMessage)
这里需要三表联查就行了
2)就是甲用户不是第一次登录的情况下,比较复杂点,需要先查用户消息系统表(userMessage)中有几条消息表中的数据(Message),有的就不需要插入用户消息系统表中,没有的才要插入。这里需要用到左查询加三表联查

业务逻辑层(service)编写

package com.taotao.service;

import java.util.List;
import java.util.Map;


import com.taotao.pojo.Messages;

public interface MessagesService {
	public int add(Messages m);
	public int update(Messages m);
	public List<Messages> list(Map<String, Object> q);
}

package com.taotao.service.impl;

import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.taotao.mapper.MessagesMapper;
import com.taotao.pojo.Messages;
import com.taotao.service.MessagesService;
@Service
public class MessagesServiceImpl implements MessagesService {
	@Autowired
	private MessagesMapper messagesMapper;

	@Override
	public int add(Messages m) {
		// TODO Auto-generated method stub
		return messagesMapper.add(m);
	}

	@Override
	public int update(Messages m) {
		// TODO Auto-generated method stub
		return messagesMapper.update(m);
	}

	@Override
	public List<Messages> list(Map<String, Object> q) {
		// TODO Auto-generated method stub
		return messagesMapper.list(q);
	}
	
}

package com.taotao.service;

import java.util.List;
import java.util.Map;

import com.taotao.pojo.UserMessage;
/**
 * 站内信之消息内容业务逻辑层
 * @author 盛
 *
 */
public interface MessageTextService {
	public int add(UserMessage m);
	public int update(UserMessage m);
	public List<UserMessage> list(Map<String, Object> q);
}

package com.taotao.service.impl;

import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.taotao.mapper.MessageTextMapper;
import com.taotao.pojo.UserMessage;
import com.taotao.service.MessageTextService;
@Service
public class MessageTextServiceImPl implements MessageTextService {
	@Autowired
	private MessageTextMapper messageTextMapper;
	@Override
	public int add(UserMessage m) {
		// TODO Auto-generated method stub
		return messageTextMapper.add(m);
	}

	@Override
	public int update(UserMessage m) {
		// TODO Auto-generated method stub
		return messageTextMapper.update(m);
	}

	@Override
	public List<UserMessage> list(Map<String, Object> q) {
		// TODO Auto-generated method stub
		return messageTextMapper.list(q);
	}

}

package com.taotao.service;

import java.util.List;
import java.util.Map;

import com.taotao.pojo.UserMessage;
/**
 * 站内信之用户系统业务逻辑层
 * @author 盛
 *
 */
public interface UserMessageService {
	public int add(UserMessage m);
	public int update(UserMessage m);
	public List<UserMessage> list(Map<String, Object> q);
	public List<UserMessage> findListMessage(Map<String, Object> q);
	public int getListMessage(Map<String, Object> q);
}

package com.taotao.service.impl;

import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.taotao.mapper.UserMessageMapper;
import com.taotao.pojo.UserMessage;
import com.taotao.service.UserMessageService;
@Service
public class UserMessageServiceImpl implements UserMessageService {
	@Autowired
	private UserMessageMapper userMessageMapper;
	@Override
	public int add(UserMessage m) {
		// TODO Auto-generated method stub
		return userMessageMapper.add(m);
	}

	@Override
	public int update(UserMessage m) {
		// TODO Auto-generated method stub
		return userMessageMapper.update(m);
	}

	@Override
	public List<UserMessage> list(Map<String, Object> q) {
		// TODO Auto-generated method stub
		return userMessageMapper.list(q);
	}

	@Override
	public List<UserMessage> findListMessage(Map<String, Object> q) {
		// TODO Auto-generated method stub
		return userMessageMapper.findListMessage(q);
	}

	@Override
	public int getListMessage(Map<String, Object> q) {
		// TODO Auto-generated method stub
		return userMessageMapper.getListMessage(q);
	}

}

以上就是今天内容~欢迎评论区点评留言,让我们共同进步!!!
对于控制层(Controller)我还没有具体想好怎么展示,因为这个需要跟前端结合。我需要研究一下怎么处理比较合适!!!

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值