JPA
Cart
public interface CartRepository extends CrudRepository<Cart, Integer> {
@Modifying
@Procedure
void saveCart(String cartCode, long productId, short quantity);
@Transactional
@Modifying
@Query(value = "UPDATE Cart SET Quantity = :quantity WHERE CartId = :id", nativeQuery = true)
void edit(int id, short quantity);
}
Procedure
CREATE PROC SaveCart(
@CartCode CHAR(32),
@ProductId BIGINT,
@Quantity SMALLINT
)
AS
IF EXISTS(SELECT * FROM Cart WHERE CartCode = @CartCode AND ProductId = @ProductId)
UPDATE Cart SET Quantity += @Quantity WHERE CartCode = @CartCode AND ProductId = @ProductId;
ELSE
INSERT INTO Cart (CartCode, ProductId, Quantity) VALUES (@CartCode, @ProductId, @Quantity);
GO