您当前的位置: 首页 > 

java持续实践

暂无认证

  • 2浏览

    0关注

    746博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

黑马十次方项目day02-12之文章审核和点赞

java持续实践 发布时间:2019-01-13 16:50:10 ,浏览量:2

文章目录
      • 需求分析
      • dao
      • service
      • controller
      • 测试

需求分析

点赞和文章的审核,都是执行sql的update语句. 在restful风格中,采用的是put请求. 只需传递文章的id即可. 在tb_article表中, 有state审核状态字段, 0代表未审核, 1代表已经审核 thumbup为点赞数字段.

dao

注意,点赞用到了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
}

数据库中该字段加一了

关注
打赏
1658054974
查看更多评论
立即登录/注册

微信扫码登录

0.0396s