inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

MyBatis 환경 설정 & 조회하기까지 (select)

오류가 자꾸 나는데 왜이러는 걸까요?ㅠㅠ

해결된 질문

239

mins199600

작성한 질문수 24

0

 

server:
  port: 8081

spring:
  thymeleaf:
    prefix: classpath:/templates
    suffix: .html
    cache: false

  devtools:
    livereload:
      enabled: true
    restart:
      enabled: false

  datasource:
    driver-class-name: org.mariadb.jdbc.Driver
    url: jdbc:mariadb://localhost:3306/boot
    username: root
    password:

  mybatis:
    mapper-locations: classpath:sqlmap/**/*.xml
    configuration:
      map-underscore-to-camel-case: true

 

package hello.sailing.v1.service;
import hello.sailing.v1.dao.MenuDao;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Service
@Log4j2
public class MenuSvc {

    @Autowired
    MenuDao menuDao;

    public MenuSvc() {
        log.info("===== MenuSvc , 생성자 =====");
    }

    public List<Map<String, Object>> doMenu() {
        List<Map<String, Object>> list = menuDao.doMenu();

        log.info(list);
        return list;
    }


    public List<Map<String, Object>> dolistOld() {

        List<Map<String, Object>> list = new ArrayList<>();

        Map<String, Object> map = new HashMap<>();
        map.put("No","1");
        map.put("name","아이스아메리카노");
        map.put("kind","커피");
        map.put("price","2,000");
        map.put("reg_day","2020.10.29");
        map.put("mod_day","2021.10.29");
        list.add(map);

        Map<String, Object> map2 = new HashMap<>();

        map2.put("No","2");
        map2.put("name","아이스초코");
        map2.put("kind","음료");
        map2.put("price","4,000");
        map2.put("reg_day","2020.10.29");
        map2.put("mod_day","2021.10.29");
        list.add(map2);

        Map<String, Object> map3 = new HashMap<>();

        map3.put("No","3");
        map3.put("name","아이스불샷");
        map3.put("kind","음료");
        map3.put("price","4,500");
        map3.put("reg_day","2020.10.29");
        map3.put("mod_day","2021.10.29");
        list.add(map3);

        log.info(list);

        return list;
    }
}

 

package hello.sailing.v1.dao;

import org.apache.ibatis.annotations.Mapper;
import org.mybatis.spring.annotation.MapperScan;

import java.util.List;
import java.util.Map;

@Mapper
@MapperScan("hello.sailing.v1.dao")
public interface MenuDao {

    List<Map<String, Object>> doMenu();
}

 

package hello.sailing.v1.controller;

import hello.sailing.v1.service.MenuSvc;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.List;
import java.util.Map;

@Controller
public class MenuCon {

    @Autowired
    MenuSvc menuSvc;

    @RequestMapping("/v1/menu")

    public String doMenu(Model model){

        //Data 만들기, List, Map
        List<Map<String, Object>> list = menuSvc.doMenu();

        //Data 송부
        model.addAttribute("list",list);
        model.addAttribute("hello","========= MenuCon ========");

        return "/v1/menu/menu";
    }
}

 

package hello.sailing.v1.dao;

import org.apache.ibatis.annotations.Mapper;
import org.mybatis.spring.annotation.MapperScan;

import java.util.List;
import java.util.Map;

@Mapper
@MapperScan("hello.sailing.v1.dao")
public interface MenuDao {

    List<Map<String, Object>> doMenu();
}

 2024-09-27T14:34:44.599+09:00 ERROR 5176 --- [nio-8081-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): hello.sailing.v1.dao.MenuDao.doMenu] with root cause
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): hello.sailing.v1.dao.MenuDao.doMenu

오류를 어떻게 수정해야 할지 모르겠어요..
BindindException이 왜 터질까요? id값도 맞게 써줬는데

spring mvc spring-boot

답변 5

1

mins199600

해결했어요!! yml파일에서 mybatis 를 스프링 안에 넣어서 실행이 안됬던거 였어요!!

0

IT늦공 김부장

안녕하세요.
해당 프로젝트 파일을 묶어서 구글 링크나 제 메일로 보내주시면 제가 확인해볼게요.
메일은 good.dhkim@gmail.com 입니다. 구글 드라이브에 올리시고 공유해 주셔도 되구요.

0

mins199600

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="hello.sailing.v1.dao.MenuDao">
    <!--조회-->
    <select id="doList" resultType="map">
        select no, coffee, kind, price,
        date_format(reg_day,'%Y,%m,%d') as reg_day,
        date_format(mod_day,'%y,%m,%d') as mod_day
        from coffeemenu;
    </select>
</mapper>

이렇게 했는데 뭐가 잘못된걸까요?

 

0

mins199600

화면 캡처 2024-09-27 145343.jpg

 

0

인프런 AI 인턴

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

오류가 발생하는 주된 이유는 MyBatis가 xml 파일에서 해당 Mapper의 SQL 구문을 찾을 수 없기 때문입니다. 많이 발생하는 실수는 xml 파일의 경로가 잘못 설정되었거나, namespace가 정확하게 매핑되지 않았을 때 발생합니다.

다음은 몇 가지 확인 사항입니다.

  1. xml 파일 경로 확인:

    • mapper-locations 설정이 classpath:sqlmap/**/*.xml로 되어 있는데, 실제 xml 파일들이 이 경로에 존재하는지 확인해 주세요.
  2. namespace 확인:

    • CoffeeMenu.xml과 같은 xml 파일의 namespacehello.sailing.v1.dao.MenuDao로 정확히 설정되어 있는지 확인하세요.

다음은 확인이 필요한 부분입니다:

<!-- CoffeeMenu.xml -->
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="hello.sailing.v1.dao.MenuDao">
    <!-- 메뉴 조회 -->
    <select id="doMenu" resultType="map">
        SELECT no, coffee, kind, price,
            DATE_FORMAT(reg_day,'%Y.%m.%d') AS reg_day,
            DATE_FORMAT(mod_day,'%Y.%m.%d') AS mod_day
        FROM coffee_menu;
    </select>
</mapper>

추가 확인 사항

  1. MenuDao 인터페이스와 CoffeeMenu.xml 파일의 namespace가 정확히 일치하는지 확인하세요.
  2. application.yaml 파일에서 mybatis.mapper-locations 설정이 실제 파일 경로와 일치하는지 확인하세요.

유사한 질문 예시들

  1. MyBatis 조회하기(7-2강) 실습시 오류가 발생합니다.
  2. DB 연동 부분에서 에러가 발생합니다.

이와 같은 검토를 통해 문제를 해결할 수 있을 것입니다. 만약 추가적인 도움이 필요하시다면 문의사항 남겨주세요.

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

0

mins199600

제가 해봤는데 저는 패키치 설정도 다 맞고 디비도 켜져 있고 문제가 없는데 왜 저런 오류가 날까요?

마이바티스 환경설정 조회하기 강의 부분에서 메뉴부분에러

0

57

2

자바 8버전이 선택지에 없는데 어떻게 하죠

0

71

2

zip파일 다운받아서 풀었는데도 계속 오류가 생기네요

0

182

2

가격 수정만 자꾸 에러페이지로 갑니다...ㅜ

0

266

2

오류가 이렇게 뜨는데

0

496

1

타임리프 > jsp

0

96

1

File imprt 어떤거 해야하죠?

0

127

1

검색기능이 안됩니다

0

141

2

검색기능이 안됩니다

0

173

3

500에러

0

168

2

v2 객체 만드는중 입니다

0

123

2

오류가 왜 나는건지 모르겠어요

0

150

2

스프링 부트 버전

0

168

2

log.info가 적용이 안되는 문제

0

171

1

Spring Boot에서 jsp 연동 오류

0

317

1

7장 insert mapper erro 문의합니다

1

246

2

선생님 혹시 파일업로드도 알려주실수있나여?

2

593

1

선생님 혹시 세션하고 쿠키 부분 언제쯤 올려주실수있나여?

1

195

1

스프링 부트 2.x 버전 지원 중단, myBatis 추가가 안돼요

0

879

1

커뮤니티 버전에서 스프링 부트를 선택할수 없습니다.

1

346

1

안녕하세요 Ajax강의 잘듣고있습니다. 다름이 아니라 Ajax로 검색할떄 시작일이나 종료일 고객명과 같은 검색조건을 어떻게 구현해야하는지 고민을해보다 질문드립니다.

1

346

2

DB 생성시 발생 에러 관련! "Can't create table" "Error No 150. "Foreign key constraint is incorrectly formed")

1

525

0

int i = menuService.doInsert(coffee,kind,price); 이 코드 질문있어요

1

375

1

@Data 인식 문제

0

286

2