文章目录
需求分析
- 需求分析
- dao
- service
- controller
- 测试
点赞和文章的审核,都是执行sql的update语句. 在restful风格中,采用的是put请求. 只需传递文章的id即可. 在tb_article表中, 有state审核状态字段, 0代表未审核, 1代表已经审核
thumbup为点赞数字段.
注意,点赞用到了sql语句的thumbup =thumbup+1
. 而null加上任何值都是null值,因此在新增数据时,要给定该字段初始值为0
public interface ArticleDao extends JpaRepository,JpaSpecificationExecutor{
@Modifying
@Query(value = "update tb_article set state =1 where id=?" ,nativeQuery = true)
public void updateState(String id);
@Modifying
@Query(value = "update tb_article set thumbup =thumbup+1 where id=?",nativeQuery = true)
public void addThumbup(String id);
}
service
@Service
public class ArticleService {
@Autowired
private ArticleDao articleDao;
@Autowired
private IdWorker idWorker;
public void updateState(String id) {
articleDao.updateState(id);
}
public void addThumbup(String id) {
articleDao.addThumbup(id);
}
}
controller
@RestController
@CrossOrigin
@RequestMapping("/article")
public class ArticleController {
@Autowired
private ArticleService articleService;
/**
* 方法名: thumbup
* 方法描述: 点赞文章
* 修改日期: 2019/1/13 16:10
* @param articleId
* @return entity.Result
* @author taohongchao
* @throws
*/
@RequestMapping(value = "/thumbup/{articleId}", method = RequestMethod.PUT)
public Result thumbup(@PathVariable String articleId) {
articleService.addThumbup(articleId);
return new Result(true,StatusCode.OK,"点赞成功");
}
/**
* 方法名: examine
* 方法描述: 审核文章
* 修改日期: 2019/1/13 16:10
* @param articleId
* @return entity.Result
* @author taohongchao
* @throws
*/
@RequestMapping(value = "/examine/{articleId}", method = RequestMethod.PUT)
public Result examine(@PathVariable String articleId) {
articleService.updateState(articleId);
return new Result(true,StatusCode.OK,"审核成功");
}
}
测试
开启ArticleApplication启动类. 进行测试 发送http://localhost:9004/article/examine/1
文章审核的请求. 后台报错如下 Caused by: javax.persistence.TransactionRequiredException: Executing an update/delete query
说的是执行更新和删除语句需要加上事务. 解决方法是在service层的类上,加上事务的注解 加上事务后,重新测试,即可更新文章的状态了. 从0变成了1 .
点赞 发送请求 http://localhost:9004/article/thumbup/1
响应如下
{
"flag": true,
"code": 20000,
"message": "点赞成功",
"data": null
}
数据库中该字段加一了