我正在尝试为购买构建简单的REST 我需要2种方法。 第一人应显示按日期排序的所有购买 Secondone删除指定日期的所有购买 我制定了一种添加和获取所有购买商品的方法。 现在我被卡住了。
@Entity
@Table (name="purchase")
public class Purchase {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "name")
private String name;
@CreationTimestamp
@Temporal(TemporalType.DATE)
@Column(name="createat")
private Date created;
@Column(name="price")
private BigDecimal price;
@Column(name="currency")
private String currency;
@Repository
public interface PurchaseRepository extends JpaRepository<Purchase, Long> {
}
@Service
public class PurchaseService {
@Autowired
private PurchaseRepository purchaseRepository;
public void addPurchase(Purchase purchase) {
purchaseRepository.save(purchase);
}
public List<Purchase> getAllPurchase() {
List<Purchase> purchase = new ArrayList<>();
purchaseRepository.findAll().forEach(purchase::add);
return purchase;
}
}
@RestController
public class PurchaseController {
@Autowired
private PurchaseService purchaseService;
@PostMapping("/purchase")
public void addPurchase(@RequestBody Purchase purchase) {
purchaseService.addPurchase(purchase);
}
@RequestMapping("/purchase")
public List<Purchase> getAllTopics() {
return purchaseService.getAllPurchase();
}
}
找不到以下解决方案和实现: 我希望有一种方法可以按日期对我的列表进行排序 2种方法删除指定日期的所有购买
答案 0 :(得分:1)
假设您使用的是Spring,如注释所示,还假设您使用的是SpringData作为数据库通信的抽象层。您不应该扩展JPARepository,而应该扩展CrudRepository。在那里,您可以通过特殊的命名约定或HQL定义查询。
例如:
@Repository
public interface PurchaseRepository extends CrudRepository<Purchase, Long> {
List<Purchase> findAllOrderByDate();
long deleteByDate(Date date);
}
deleteByDate函数将返回已删除行的计数。
如您所见,您可以通过查询的名称定义查询。有关更多信息:https://docs.spring.io/spring-data/data-commons/docs/2.1.8.RELEASE/reference/html/
更新:实现只是一个示例,您不能直接复制和粘贴并直接使用它。如所提到的文档中所述,您可以通过特殊的命名约定来定义查询,该约定允许您使用实体中的属性名称以语义方式定义两个查询。在您的情况下,删除将findAllOrderByCreatedAsc
或findAllOrderByCreatedDesc
相同。