实现步骤:
1.设计表:
-- ---------------------------- -- Table structure for `nicedetail` -- ---------------------------- DROP TABLE IF EXISTS `nicedetail`; CREATE TABLE `nicedetail` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '点赞id,自增,主键', `userid` varchar(50) DEFAULT NULL COMMENT '所点赞的用户', `contentid` int(11) DEFAULT NULL COMMENT '用户所点赞说说的id', `createtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '点赞时间,默认为入库时间', PRIMARY KEY (`id`), KEY `userid` (`userid`), KEY `contentid` (`contentid`), CONSTRAINT `nicedetail_ibfk_1` FOREIGN KEY (`userid`) REFERENCES `userinfo` (`userid`), CONSTRAINT `nicedetail_ibfk_2` FOREIGN KEY (`contentid`) REFERENCES `content` (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1141 DEFAULT CHARSET=utf8;
2.后台代码:
1.controller:
package net.stxy.one.controller; import net.stxy.one.model.Content; import net.stxy.one.model.NiceDetail; import net.stxy.one.service.ContentService; import net.stxy.one.service.NiceDetailService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import java.util.Date; import java.util.List; /** * 实现点赞服务 * Created by ASUS on 2018/5/6 * * @Authod Grey Wolf */ @Controller @RequestMapping("/user") public class NiceDetailController { @Autowired private NiceDetailService niceDetailService; @Autowired private ContentService contentService; /** * 处理用户点赞行为 * @param niceDetail * @return */ @RequestMapping("/niceDetail") @ResponseBody public String niceDetail(NiceDetail niceDetail ){ System.out.println("点赞模块:"+niceDetail.toString()); //查询是否有该用户的点赞记录 NiceDetail niceDetail1=niceDetailService.findNiceDetail(niceDetail); int result=0; if (niceDetail1!=null){ System.out.println("有该记录"); //如果找到这条记录,删除该记录,同时文章的点赞数减一 //删除记录 niceDetailService.deleteNiceDetail(niceDetail1.getId()); //根据点赞id找到文章 Content content=contentService.selectContent(niceDetail1.getContentid()); //文章点赞数减一 content.setNice(content.getNice()-1); result=content.getNice(); System.out.println("res:"+result); //更新文章点赞数 contentService.updateContent(content); }else{ //如果没有找到这条记录,则添加这条记录,同时文章数加一; //添加记录 System.out.println("没有记录:"); niceDetailService.insertNiceDetail(niceDetail); Content content=contentService.selectContent(niceDetail.getContentid()); //文章点赞数加一 content.setNice(content.getNice()+1); result=content.getNice(); System.out.println("res:"+result); //更新文章点赞数 contentService.updateContent(content); } return ""+result; } }
2.service:
package net.stxy.one.service; import net.stxy.one.model.Follow; import net.stxy.one.model.NiceDetail; import net.stxy.one.model.Page; import java.util.List; public interface NiceDetailService { /** * 插入点赞记录 * @param niceDetail * @return */ Integer insertNiceDetail(NiceDetail niceDetail); /** * 删除点赞记录 * @param id * @return */ Integer deleteNiceDetail(Integer id); }
package net.stxy.one.service.impl; import net.stxy.one.mapper.NiceDetailMapper; import net.stxy.one.model.NiceDetail; import net.stxy.one.model.Page; import net.stxy.one.service.NiceDetailService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @Service("nicedetailService") public class NiceDetailServiceImpl implements NiceDetailService { @Autowired private NiceDetailMapper nicedetailMapper; @Override public Integer insertNiceDetail(NiceDetail niceDetail) { System.out.println("impl:"+niceDetail.toString()); return nicedetailMapper.insertSelective(niceDetail); } @Override public Integer deleteNiceDetail(Integer id) { return nicedetailMapper.deleteByPrimaryKey(id); } }
3.mapper:
package net.stxy.one.mapper; import net.stxy.one.model.NiceDetail; import net.stxy.one.model.Page; import org.springframework.stereotype.Repository; import java.util.List; @Repository public interface NiceDetailMapper { int deleteByPrimaryKey(Integer id); int insertSelective(NiceDetail record); }
<?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="net.stxy.one.mapper.NiceDetailMapper" > <resultMap id="BaseResultMap" type="net.stxy.one.model.NiceDetail" > <id column="id" property="id" jdbcType="INTEGER" /> <result column="userid" property="userid" jdbcType="VARCHAR" /> <result column="contentid" property="contentid" jdbcType="INTEGER" /> <result column="createtime" property="createtime" jdbcType="TIMESTAMP" /> </resultMap> <sql id="Base_Column_List" > id, userid, contentid, createtime </sql> <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" > delete from nicedetail where id = #{id,jdbcType=INTEGER} </delete> <insert id="insertSelective" parameterType="net.stxy.one.model.NiceDetail" > insert into nicedetail <trim prefix="(" suffix=")" suffixOverrides="," > <if test="id != null" > id, </if> <if test="userid != null" > userid, </if> <if test="contentid != null" > contentid, </if> <if test="createtime != null" > createtime, </if> </trim> <trim prefix="values (" suffix=")" suffixOverrides="," > <if test="id != null" > #{id,jdbcType=INTEGER}, </if> <if test="userid != null" > #{userid,jdbcType=VARCHAR}, </if> <if test="contentid != null" > #{contentid,jdbcType=INTEGER}, </if> <if test="createtime != null" > #{createtime,jdbcType=TIMESTAMP}, </if> </trim> </insert> </mapper>
我的座右铭:不会,我可以学;落后,我可以追赶;跌倒,我可以站起来;我一定行。