@Transactional @Override public Blog getAndConvert(Long id) { Blog blog = blogRepository.findOne(id); if (blog == null) { throw new NotFoundException("该博客不存在"); } Blog b = new Blog(); BeanUtils.copyProperties(blog,b); String content = b.getContent(); b.setContent(MarkdownUtils.markdownToHtmlExtensions(content)); blogRepository.updateViews(id); return b; }
时间: 2023-06-20 09:09:39 浏览: 91
这是一段 Java 代码,它使用了 Spring Framework 的 @Transactional 注解来确保该方法的实现在事务中执行。该方法的功能是从数据库中获取一个博客对象,如果该博客不存在,则抛出一个自定义的 NotFoundException 异常。如果博客存在,则将其属性复制到一个新的博客对象中,并使用 MarkdownUtils 工具类将博客内容从 Markdown 格式转换为 HTML 格式,然后更新博客的浏览量并返回该博客对象。该方法的返回值类型是 Blog 类型,因此可以根据需要对返回的博客对象进行进一步操作。
相关问题
@Transactional(rollbackFor = Exception.class)与@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)的区别
@Transactional注解用于声明事务,在Spring中常用来保证方法的执行在一个事务内部,以确保数据的一致性和完整性。其中,rollbackFor参数指定哪些异常需要回滚事务,Propagation.REQUIRED指定了方法的事务传播行为。
区别如下:
- @Transactional(rollbackFor = Exception.class):这个注解只指定了回滚的异常类型,而没有指定传播行为,默认传播行为是Propagation.REQUIRED。
- @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class):这个注解指定了方法的事务传播行为和回滚的异常类型。
简单来说,前者只指定了回滚异常类型,而后者不仅指定了回滚异常类型,还明确指定了事务的传播行为。
@Transactional //一个业务中包含多个增删改操作,所以要添加事务 @Override public void delete(List<Long> ids) { for (Long id : ids) { Dish dish = dishMapper.getById(id); if (dish.getStatus() == StatusConstant.ENABLE) { //判断如果菜品在起售中,那么就不能删除 throw new DeletionNotAllowedException(MessageConstant.DISH_ON_SALE); } } //删除菜表中的数据 List<Long> setmealIds = setmealDishMapper.getSetmealIdsByDishIds(ids); if (setmealIds != null && setmealIds.size() > 0) { //当前菜品被套餐关联了,不能删除 throw new DeletionNotAllowedException(MessageConstant.DISH_BE_RELATED_BY_SETMEAL); } for (Long id : ids) { dishMapper.deleteById(id);//后绪步骤实现 //删除菜品关联的口味数据 dishFlavorMapper.deleteByDishId(id);//后绪步骤实现 } }
这代码是一个菜品删除的业务逻辑,使用了事务注解 @Transactional 来保证多个操作的原子性。首先,它遍历了传入的菜品 id 列表,检查每个菜品是否处于起售状态,如果是则抛出 DeletionNotAllowedException 异常,表示不允许删除。接着,它查询该菜品是否被任何套餐关联,如果是则同样抛出 DeletionNotAllowedException 异常。最后,它遍历菜品 id 列表,依次删除菜品信息和与该菜品关联的口味数据。
阅读全文