版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33229669/article/details/86424659
文章目录
需求分析
点赞和文章的审核,都是执行sql的update语句.
在restful风格中,采用的是put请求. 只需传递文章的id即可.
在tb_article表中, 有state审核状态字段, 0代表未审核, 1代表已经审核
thumbup为点赞数字段.
dao
注意,点赞用到了sql语句的thumbup =thumbup+1
.
而null加上任何值都是null值,因此在新增数据时,要给定该字段初始值为0
public interface ArticleDao extends JpaRepository<Article,String>,JpaSpecificationExecutor<Article>{
@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
}
数据库中该字段加一了