【问题标题】:How to find within a date interval in Spring Boot?如何在 Spring Boot 中的日期间隔内查找?
【发布时间】:2020-12-17 07:16:48
【问题描述】:

这是我的实体:

这是我的存储库:

@Query(value="SELECT * FROM operation WHERE date_operation  BETWEEN 'dat1' AND 'dat2'", nativeQuery =true)
public Page<Operation> AlllistByDate(@Param("dat1")Date dt1, @Param("dat2")Date dat2, Pageable page);   

这是我的控制器:

@RequestMapping(value="operationbyDate",  method = RequestMethod.GET)
public String  operationbyDaten(Model model, @RequestParam(name="page", defaultValue =  "0")int p,
        @RequestParam(value="dat1",required=false) Date dat1,
        @RequestParam(value="dat2",required=false) Date dat2) throws ParseException {

    try {
        Page<Operation> operation = operationDao.AlllistPageOp(dat1, dat2, p, 150);
        int pageCount = operation.getTotalPages();
        int [] pages =  new  int [pageCount];
        for (int i = 0; i < pageCount; i++) 
            pages[i]=i;
        model.addAttribute("pages", pages);
        model.addAttribute("pagecourente", p);
        model.addAttribute("dat1",dat1);
        model.addAttribute("dat2",dat2);

        model.addAttribute("listOperbydate", operation);
        
    } catch (Exception e) {
        // TODO: handle exception
        return  "redirect:/operationbyDate?dat1="+dat1+"&error="+e.getMessage();
    }
    return "empl/seacbydate";
}

这是基于 thymeleaf 的 html 搜索表单:

<form class="form-inline ml-3"  th:action="@{operationbyDate}" method="get">
                      <div class="input-group input-group-sm">
                        <input class="form-control form-control-navbar"  type="date"   name="dat1" th:value="${dat1}" placeholder="Search" aria-label="Search">
                        <input class="form-control form-control-navbar"  type="date"   name="dat2" th:value="${dat2}" placeholder="Search" aria-label="Search">
                     
                        <div class="input-group-append">
                          <button class="btn btn-navbar" type="submit">
                            <i class="fas fa-search"></i>
                          </button>
                        </div>
                      </div>
                    </form>
                    

在我的数据库中,我的数据介于 25-08-2020 和 28-08-2020 之间。

当我输入值时:

执行后得到这个结果:

谁能帮帮我?

【问题讨论】:

    标签: spring-boot spring-data-jpa jpa-2.0 jpql java-ee-8


    【解决方案1】:

    您需要使用@DateTimeFormat注解并提供格式化模式参数以将字符串转换为Date

    @RequestMapping(value="operationbyDate",  method = RequestMethod.GET)
    public String  operationbyDaten(Model model, @RequestParam(name="page", defaultValue =  "0")int p,
            @RequestParam(value="dat1",required=false) @DateTimeFormat(pattern = "yyyy-MM-dd") Date dat1,
            @RequestParam(value="dat2",required=false) @DateTimeFormat(pattern = "yyyy-MM-dd") Date dat2)
            throws ParseException {
     ...
    }
    

    【讨论】:

      【解决方案2】:

      修正后

      休眠:SELECT * FROM operation WHERE date_operation BETWEEN 'dat1' AND 'dat2' limit ?

      更正后,他接受并执行搜索,但未显示交易

      【讨论】:

        【解决方案3】:

        我找到了解决办法,这里是解决办法

        1.控制器

        @RequestMapping(value="/consulteroperation")
        public String findbetwenn(Model model, @RequestParam(name="page", defaultValue =  "0")int p,
        @RequestParam(value="dat1",required=false)@DateTimeFormat(pattern = "yyyy-MM-dd") Date dat1, 
        @RequestParam(value="dat2",required=false)@DateTimeFormat(pattern = "yyyy-MM-dd") Date dat2) {
            
            try {
                Page<Operation> operation = operationDao.AlllistPageOp(dat1, dat2, p, 150);
                //List<Operation> operation  = operationDao.listSimple();
                model.addAttribute("op", operation);
            } catch (Exception e) {
                return  "redirect:/operationbyDate?dat1="+dat1+"&error="+e.getMessage();
            }
            
            return "empl/seacbydate";
            
        }
        

        2。存储库(道)

        @Query(value="SELECT * FROM operation WHERE date_operation  BETWEEN ? AND ?", nativeQuery =true)
        public Page<Operation> AlllistByDate(@Param("dat1")Date dt1, @Param("dat2")Date dat2, Pageable page);
        
        1. html

                               <div class="input-group-append">
                                 <button class="btn btn-navbar" type="submit">
                                   <i class="fas fa-search"></i>
                                 </button>
                               </div>
                             </div>
                           </form>
          

        【讨论】:

          猜你喜欢
          • 2020-09-18
          • 1970-01-01
          • 1970-01-01
          • 2017-10-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-04-10
          相关资源
          最近更新 更多