从Spring引导按日期过滤的MySQL数据库中获取数据

问题描述 投票:0回答:2

我有表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);
    }


}
mysql spring
2个回答
0
投票

只需交换今天和beforeDays的参数就可以了>

return repository.findAllByDateBetween(beforeDays, today);

因为根据您的计算,您今天是Days between。


0
投票

您的方法名称似乎不正确。如果我现在正在工作,那么您应该具有:

© www.soinside.com 2019 - 2024. All rights reserved.