我有表take_coffee,我想按日期过滤数据。我需要获取上周,一个月和一年的数据。数据是关于已喝咖啡的,因此具有ID,日期和标签。我该如何过滤?我需要使用WHERE date>(今天7)或今天30或今天365进行查询。谢谢。这是我的代码,但是无法正常工作。实体
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "take_coffee")
public class Coffee {
@Id
@GeneratedValue
private int id;
@JsonFormat(pattern = "yyyy-MM-dd")
private Date date;
private String tag;
}
存储库
public interface CoffeeRepository extends JpaRepository<Coffee, Integer> {
List<Coffee> findAllByDateBetween(Date today, Date days);
}
服务
@Service
public class CoffeeService {
@Autowired
private CoffeeRepository repository;
public Coffee takeCoffee(Coffee coffee){
return repository.save(coffee);
}
public List<Coffee> getAllCoffee(){
return repository.findAll();
}
public Coffee getCoffeeById(int id){
return repository.findById(id).orElse(null);
}
public String deleteCoffeeById(int id){
repository.deleteById(id);
return "deleted coffee " + id;
}
public Coffee updateCoffee(Coffee coffee){
Coffee existingcoffee = repository.findById(coffee.getId()).orElse(null);
existingcoffee.setDate(coffee.getDate());
existingcoffee.setTag(coffee.getTag());
return repository.save(existingcoffee);
}
public List<Coffee> findAllByDateBetween(int days){
Calendar calendar = Calendar.getInstance();
Date today = calendar.getTime();
calendar.add(Calendar.DAY_OF_MONTH, -days);
Date beforeDays = calendar.getTime();
return repository.findAllByDateBetween(today, beforeDays);
}
}
控制器-ReactApp的跨源原因
@CrossOrigin(origins = "http://localhost:3000")
@RestController
public class CoffeeController {
@Autowired
private CoffeeService service;
@PostMapping("/takeCoffee")
public Coffee takeCaffee (@RequestBody Coffee caffee){
return service.takeCoffee(caffee);
}
@GetMapping("/getCoffee")
public List<Coffee> getAllUsers(){
return service.getAllCoffee();
}
@GetMapping("/coffee/{id}")
public Coffee getCaffeeById(@PathVariable int id){
return service.getCoffeeById(id);
}
@GetMapping("/coffee/stats/{days}")
public List<Coffee> findAllByDateBetween(@PathVariable int days){
return service.findAllByDateBetween(days);
}
@PutMapping("/updateCoffee")
public Coffee updateCoffee (@RequestBody Coffee caffee){
return service.updateCoffee(caffee);
}
@DeleteMapping("/deleteCoffee/{id}")
public String deleteCoffeeById (@PathVariable int id){
return service.deleteCoffeeById(id);
}
}
只需交换今天和beforeDays的参数就可以了>
return repository.findAllByDateBetween(beforeDays, today);
因为根据您的计算,您今天是Days between。
您的方法名称似乎不正确。如果我现在正在工作,那么您应该具有: