인프런 커뮤니티 질문&답변

mins199600님의 프로필 이미지

작성한 질문수

스프링 부트 웹 개발 입문 - 따라하며 배우기

주문내역 작업 (VO 객체사용)

검색기능이 안됩니다

작성

·

29

0

 

@PostMapping("/order_search")
public String doSearch( @RequestParam("start_date") String strStartDate,
                        @RequestParam("end_date") String strEndDate,
                        @RequestParam(value = "coffee", defaultValue = "ALL") String strCoffee,
                        @RequestParam("name") String strName,
                        Model model

){

    log.info("strStartDate :"+strStartDate);

    List<Order_list> list = orderSvcV2.doSearch(strStartDate,strEndDate, strCoffee,strName );

    model.addAttribute("list", list);

    return "/v2/order/order";
}
/* 조회하기 */
public List<Order_list> doSearch(String strStartDate, String strEndDate, String strCoffee, String strName) {
    List<Order_list> list = orderDao.doSearch(strStartDate,strEndDate, strCoffee,strName );
    return list;
}
package hello.sailing.v2.dao;

import hello.sailing.v2.vo.Order_list;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;

@Mapper
public interface OrderDaoV2 {
    List<Order_list> doList();

    List<Order_list> doSearch(String strStartDate, String strEndDate, String strCoffee, String strName);
}
package hello.sailing.v2.vo;

import lombok.Data;

@Data
public class Order_list {
    private String no;
    private String coffee_no;
    private String coffee;
    private String price;
    private String cust_id;
    private String name;
    private String reg_day;

}

<!-- 검색에 의한 쿼리 -->
<select id="doSearch" resultType="hello.sailing.v2.vo.Order_list">
    SELECT no, coffee_no, coffee, price, cust_id, name,
    DATE_FORMAT(reg_day,'%Y.%m.%d') AS reg_day
    FROM order_list
    WHERE 1=1
    AND reg_day >= DATE_FORMAT( #{strStartDate},'%Y%m%d')
    AND reg_day &lt; DATE_ADD(DATE_FORMAT(#{strEndDate},'%Y%m%d'), INTERVAL +1 DAY)
    <if test="strCoffee != 'ALL'">
        AND coffee like CONCAT(#{strCoffee},'%')
    </if>
    <if test="strName != 'ALL'">
        AND name like CONCAT(#{strName},'%')
    </if>
</select>

화면에서는 조회버튼을 누르면 검색이 안됩니다...코드는 틀린게 없는데 왜 그런거죠?

답변 3

0

mins199600님의 프로필 이미지
mins199600
질문자

액션태그가 강의내용에서 설명이 빠져서 없어서 그런거예요!!

0

mins199600님의 프로필 이미지
mins199600
질문자

select 태그는 문제가 없어요! action 태그 설명이 없어서 그거 빠뜨려서 그랬는데 이번엔 검색이 아예 안되네요

0

안녕하세요, 인프런 AI 인턴입니다. mins199600님.

화면에서 조회 버튼을 눌러도 검색이 되지 않는 문제에 대해 알아보겠습니다. 코드를 살펴보았을 때 문제가 발생할 수 있는 몇 가지 일반적인 원인을 짚어보겠습니다:

  1. 자바스크립트 AJAX 호출 확인:

    • PostMapping이 사용되었으므로, 조회 버튼이 POST 요청을 보내도록 구현되어 있어야 합니다.
    • 자바스크립트를 사용하여 폼 제출을 하고 있는 경우, AJAX 요청이 제대로 보내지고 있는지, URL과 HTTP 메서드가 올바르게 설정되어 있는지 확인해보세요.
  2. 폼 데이터 확인:

    • 등록되어 있는 폼에서 @RequestParam에 명시된 파라미터들이 제대로 서버로 전달되고 있는지 확인해 주세요. 예를 들어, start_date, end_date 등의 입력 필드에 올바른 값이 들어간 상태로 제출되고 있는지 확인합니다.
  3. SQL 조건문 확인:

    • XML에서 사용된 조건문이 잘못될 경우 데이터가 추출되지 않을 수 있습니다. #{}를 사용한 바인딩이 MyBatis에서 제대로 동작하는지, 특히 DATE_FORMAT 함수가 반환하는 형식과 기준이 맞는지 확인해야 합니다.
    • 조건에 따라 SQL 문이 예상대로 작동하지 않는 경우가 있으므로, SQL 쿼리를 로그로 기록하여 실행된 쿼리를 확인해 보면 좋습니다.

유사한 문제에 대한 해결 방법은 아래 링크들을 통해 추가적인 도움을 받을 수 있습니다:

  1. MyBatis 조회하기(7-2강) 실습시 오류가 발생합니다.
  2. 7장 insert mapper error 문의합니다

위의 내용을 확인하시면서 문제를 해결해보시면 좋겠습니다. 만약 확인해도 문제가 해결되지 않으면, 오류 메시지를 좀 더 상세히 확인하거나 추가적인 콘솔 로그를 통해 디버깅하는 과정을 추천드립니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

mins199600님의 프로필 이미지
mins199600
질문자

다 봤는데 문제가 없어요..

mins199600님의 프로필 이미지
mins199600
질문자

A label tag was parsed inside of a <select> which was not inserted into the document. This is not valid HTML and the behavior may be changed in future versions of chrome. <select>​ [검색조건] 등록기간​</select>​

이 오류가 자꾸 나는데요?

select 태그를 잘못 사용하신거 같은데요

mins199600님의 프로필 이미지
mins199600
질문자

아니예요!! 액션태그를 안줘서 그래요!! 강의 내용에 빠져있었어요