数据访问层
public interface BookRepository extends JpaRepository<Book,Long> {
@Modifying
@Transactional
@Query("update Book b set b.status = ?1 where id = ?2")
int updateByJPQL(int status, long id);
@Modifying
@Transactional
@Query("delete from Book b where b.id = ?1")
int deleteByJPQL(long id);
}
业务逻辑层service
@Service
public class BookService {
@Autowired
private BookRepository bookRepository;
/**
* 测试事务操作方法
* @param id
* @param status
* @param uid
* @return
*/
@Transactional
public int deleteAndUpdate(long id, int status, long uid) {
int dcount = bookRepository.deleteByJPQL(id);
int ucount = bookRepository.updateByJPQL(status,uid);
return dcount+ucount;
}
}
web层
@RestController
@RequestMapping("/api/v1")
public class BookApp {
@Autowired
private BookService bookService;
@PostMapping("/books/by")
public int findBy(@RequestParam long id,@RequestParam int status,@RequestParam long uid) {
// return bookService.findByAuthor(author);
// return bookService.findByAuthorAndStatus(author, status);
//return bookService.findByDescriptionEndsWith(description);
//return bookService.findByJPQL(len);
// return bookService.updateByJPQL(status, id);
// return bookService.deleteByJPQL(id);
return bookService.deleteAndUpdate(id, status, uid);
}
}
测试:
修改前
删除id为6的数据,修改id为5的status字段
修改后
控台打印