【保姆级SSM教程】高并发朋友圈点赞项目设计

网友投稿 383 2022-09-07

【保姆级SSM教程】高并发朋友圈点赞项目设计

【保姆级SSM教程】高并发朋友圈点赞项目设计

项目部署方法:

​​git clone MoodDao接口​​​​2.2.4、在resource目录的mapper文件下创建MoodMapper.xml​​​​2.2.5、在dao层创建UserMoodPraiseRelDao接口​​​​2.2.6在mapper文件下创建UserMoodPraiseRelMapper.xml​​

​​2.3、创建Service层和DTO类​​

​​2.3.1创建dto包下的MoodDTO类​​​​2.3.2创建dto包下的UserDTO类​​​​2.3.4在Service层创建UserService接口​​​​2.3.5在Service层创建MoodService接口​​​​2.3.6在service的Impl文件下新建UserServiceImpl.java​​​​2.3.7、在service的Impl文件下新建MoodServiceImpl.java​​​​2.3.8、在service文件下新建MoodServiceImpl接口​​​​2.3.9、在service的Impl文件下新建UserMoodPraiseRelServiceImpl​​

​​2.4、Controller层和前端页面​​

​​2.4.1创建Controller层下的UserController​​​​2.4.2创建Controller层下的MoodController​​​​2.4.3、在web-inf下创建views文件下创建mood.jsp​​

​​三、测试​​

一、数据库建表设计

1.1、创建user表(用户表)

/*Navicat MySQL Data TransferSource Server : localhostSource Server Version : 50717Source Host : localhost:3306Source Database : springmvc-mybatis-bookTarget Server Type : MYSQLTarget Server Version : 50717File Encoding : 65001Date: 2018-05-01 18:11:23*/-- ------------------------------ Table structure for ay_user-- ----------------------------DROP TABLE IF EXISTS `user`;CREATE TABLE `user` ( `id` int(32) NOT NULL AUTO_INCREMENT, `name` varchar(20) DEFAULT NULL, `account` varchar(20) default null, PRIMARY KEY (`id`), key `user_name_index`(`name`) using btree, key `user_account_index`(`account`) using btree) ENGINE=InnoDB DEFAULT CHARSET=utf8;

1.2、创建mood表(说说表)

/*Navicat MySQL Data TransferSource Server : localhostSource Server Version : 50717Source Host : localhost:3306Source Database : springmvc-mybatis-bookTarget Server Type : MYSQLTarget Server Version : 50717File Encoding : 65001Date: 2018-05-01 18:11:23*/-- ------------------------------ Table structure for mood-- ----------------------------CREATE TABLE `mood` ( `id` int(32) NOT NULL AUTO_INCREMENT, `content` varchar(256) DEFAULT NULL, `user_id` varchar(32) default null, `publish_time` datetime default null, `praise_num` int(11) default null, PRIMARY KEY (`id`), key `mood_user_id_index` (`user_id`) using btree) ENGINE=InnoDB DEFAULT CHARSET=utf8;

1.3、创建user_mood_praise_rel表(点赞关联表)

/*Navicat MySQL Data TransferSource Server : localhostSource Server Version : 50717Source Host : localhost:3306Source Database : springmvc-mybatis-bookTarget Server Type : MYSQLTarget Server Version : 50717File Encoding : 65001Date: 2018-05-01 18:11:23*/-- ------------------------------ Table structure for user_mood_praise_rel-- ----------------------------CREATE TABLE `user_mood_praise_rel` ( `id` int(32) NOT NULL AUTO_INCREMENT, `user_id` varchar(32) default null, `mood_id` varchar(32) default null, PRIMARY KEY (`id`), key `user_mood_praise_rel_user_id_index`(`user_id`) using btree, key `user_mood_praise_rel_mood_id_index`(`mood_id`) using btree) ENGINE=InnoDB DEFAULT CHARSET=utf8;

1.4、数据库初始化数据

1.4.1、user表初始化数据

/*Navicat MySQL Data TransferSource Server : localhostSource Server Version : 50717Source Host : localhost:3306Source Database : springmvc-mybatis-bookTarget Server Type : MYSQLTarget Server Version : 50717File Encoding : 65001Date: 2018-05-01 18:11:23*/-- ------------------------------ Table structure for user_mood_praise_rel data insert-- ----------------------------insert into `user` VALUES ('3','阿毅','ay');insert into `user` VALUES ('2','阿兰','al');

1.4.2、mood表初始化数据

/*Navicat MySQL Data TransferSource Server : localhostSource Server Version : 50717Source Host : localhost:3306Source Database : springmvc-mybatis-bookTarget Server Type : MYSQLTarget Server Version : 50717File Encoding : 65001Date: 2018-05-01 18:11:23*/-- ------------------------------ Table structure for mood data insert-- ----------------------------insert into `mood` VALUES ('1','今天天气真好','1','2018-06-30 22:09:06','100');insert into `mood` VALUES ('2','厦门真美,么么哒!','2','2018-07-29 17:09:06','99');

二、实体类设计

2.1、实体类结构图示:进行属性封装

2.2、创建对应实体类的Dao层和Mapper文件

2.2.1、创爱User类的Dao层UserDao接口,生成一个抽象方法findAll方法用户查询用户。

package com.ay.dao;import com.ay.model.User;public interface UserDao { //查询用户 User findAll(int id);}

2.2.2、在resource目录下创建mapper文件,新建一个UserMapper.xml文件

id, name, account

2.2.3、在dao层新建 MoodDao接口

package com.ay.dao;import com.ay.model.Mood;import org.springframework.stereotype.Repository;import java.util.List;@Repositorypublic interface MoodDao { List findAll();}

2.2.4、在resource目录的mapper文件下创建MoodMapper.xml

id, content, user_id, praise_num, publish_time

2.2.5、在dao层创建UserMoodPraiseRelDao接口

package com.ay.dao;import com.ay.model.UserMoodPraiseRel;import org.apache.ibatis.annotations.Param;import org.springframework.stereotype.Repository;/** * 描述:用户说说点赞关联DAO * * @author Ay * @create 2018/07/01 **/@Repositorypublic interface UserMoodPraiseRelDao { boolean save(@Param("userMoodPraiseRel") UserMoodPraiseRel userMoodPraiseRel);}

2.2.6在mapper文件下创建UserMoodPraiseRelMapper.xml

insert into user_mood_praise_rel (user_id, mood_id) VALUE (#{userMoodPraiseRel.userId}, #{userMoodPraiseRel.moodId})

2.3、创建Service层和DTO类

2.3.1创建dto包下的MoodDTO类

package com.ay.dto;import com.ay.model.Mood;import java.io.Serializable;/** * 描述:说说DTO * * @author Ay * @date 2018/1/6. */public class MoodDTO extends Mood implements Serializable { /** * 用户名称 */ private String userName; /** * 用户的账号 */ private String userAccount; public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getUserAccount() { return userAccount; } public void setUserAccount(String userAccount) { this.userAccount = userAccount; }}

2.3.2创建dto包下的UserDTO类

package com.ay.dto;import com.ay.model.User;/** * 描述:用户DTO * * @author Ay * @create 2018/07/01 **/public class UserDTO extends User {}

2.3.4在Service层创建UserService接口

package com.ay.service;import com.ay.dto.UserDTO;/** * 描述:用户服务接口 * * @author Ay * @date 2018/1/6. */public interface UserService { UserDTO find(String id);}

2.3.5在Service层创建MoodService接口

package com.ay.service;import com.ay.dto.MoodDTO;import java.util.List;public interface MoodService { //查询所有的说说 List findAll();}

2.3.6在service的Impl文件下新建UserServiceImpl.java

package com.ay.service.impl;import com.ay.dao.UserDao;import com.ay.dto.UserDTO;import com.ay.model.User;import com.ay.service.UserService;import org.springframework.stereotype.Service;import javax.annotation.Resource;/** * 描述:用户服务类 * * @author Ay * @date 2018/1/6. */@Servicepublic class UserServiceImpl implements UserService { @Resource private UserDao userDao; public UserDTO find(String id) { User user = userDao.find(id); return converModel2DTO(user); } private UserDTO converModel2DTO(User user) { UserDTO userDTO = new UserDTO(); userDTO.setId(user.getId()); userDTO.setAccount(user.getAccount()); userDTO.setName(user.getName()); return userDTO; }}

2.3.7、在service的Impl文件下新建MoodServiceImpl.java

package com.ay.service.impl;import com.ay.dao.MoodDao;import com.ay.dao.UserDao;import com.ay.dto.MoodDTO;import com.ay.model.Mood;import com.ay.model.User;import com.ay.service.MoodService;import org.springframework.stereotype.Service;import org.springframework.util.CollectionUtils;import javax.annotation.Resource;import java.util.ArrayList;import java.util.Collections;import java.util.List;/** * 描述:说说服务类 * * @author Ay * @date 2018/1/6. */@Servicepublic class MoodServiveImpl implements MoodService { @Resource private MoodDao moodDao; @Resource private UserDao userDao; public List findAll() { List moodList = moodDao.findAll(); return converModel2DTO(moodList); } private List converModel2DTO(List moodList) { if (CollectionUtils.isEmpty(moodList)) return Collections.EMPTY_LIST; List moodDTOList = new ArrayList(); for (Mood mood : moodList) { MoodDTO moodDTO = new MoodDTO(); moodDTO.setId(mood.getId()); moodDTO.setContent(mood.getContent()); moodDTO.setPraiseNum(mood.getPraiseNum()); moodDTO.setPublishTime(mood.getPublishTime()); moodDTO.setUserId(mood.getUserId()); moodDTOList.add(moodDTO); //设置用户信息 User user = userDao.find(mood.getUserId()); moodDTO.setUserName(user.getName()); moodDTO.setUserAccount(user.getAccount()); } return moodDTOList; }}

2.3.8、在service文件下新建MoodServiceImpl接口

package com.ay.service;import com.ay.model.UserMoodPraiseRel;/** * 描述:用户说说点赞关联接口 * * @author Ay * @date 2018/1/6. */public interface UserMoodPraiseRelService { boolean save(UserMoodPraiseRel userMoodPraiseRel);}

2.3.9、在service的Impl文件下新建UserMoodPraiseRelServiceImpl

package com.ay.service.impl;import com.ay.dao.UserMoodPraiseRelDao;import com.ay.model.UserMoodPraiseRel;import com.ay.service.UserMoodPraiseRelService;import org.springframework.stereotype.Service;import javax.annotation.Resource;/** * 描述:用户说说点赞关联服务类 * * @author Ay * @date 2018/1/6. */@Servicepublic class UserMoodPraiseRelServiceImpl implements UserMoodPraiseRelService { @Resource private UserMoodPraiseRelDao userMoodPraiseRelDao; public boolean save(UserMoodPraiseRel userMoodPraiseRel) { return userMoodPraiseRelDao.save(userMoodPraiseRel); }}

2.4、Controller层和前端页面

2.4.1创建Controller层下的UserController

package com.ay.controller;import com.ay.service.UserService;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;/** * 描述:用户控制层 * * @author Ay * @date 2018/6/6. */@RestController@RequestMapping("/user")public class UserController { @Resource private UserService userService;}

2.4.2创建Controller层下的MoodController

package com.ay.controller;import com.ay.dto.MoodDTO;import com.ay.service.MoodService;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import javax.annotation.Resource;import java.util.List;/** * 描述:说说控制层 * * @author Ay * @date 2018/1/6. */@Controller@RequestMapping("/mood")public class MoodController { @Resource private MoodService moodService; @GetMapping(value = "/findAll") public String findAll(Model model) { List moodDTOList = moodService.findAll(); model.addAttribute("moods", moodDTOList); return "mood"; }}

2.4.3、在web-inf下创建views文件下创建mood.jsp

<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" %><%@ taglib uri="prefix="c" %><%@ taglib prefix="fmt" uri="%> Getting Started: Serving Web Content

说说列表:
------------------------------------
用户:${mood.userName}
说说内容:${mood.content}
发表时间: ${mood.publishTime}
点赞数:${mood.praiseNum}
<%----%>

三、测试

​​**

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【密--码--破--译】暴力查找与二分查找
下一篇:年轻化营销如何出圈?这个品牌用“新”了!
相关文章

 发表评论

暂时没有评论,来抢沙发吧~