묻고 답해요
167만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
localhost/hello 404에러
View 환경설정 부분에서localhost:8080/hello 부분이 접속이 안됩니다.작성코드 결과화면
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
findByname파트에서 질문이 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.회원 리포지토리 테스트 케이스 작성 8:48영상을 보았는데Member result = repository.findByName("spring1").get(); 이렇게 코드를 치는걸로 나오는데 이런방식으로 하면 값이 있는지 여부를 파악 못하고 그냥 불안전하게 값을 가져오는 방식이라는걸로 예전에 다른 강의에서 말씀해주셨던 거 같은데 기억이 애매모호해서 질문드립니다. 테스트코드라서 이런방식을 택하신건지와 정석적으로 값을 체크하려면 아래방식으로 코드를 짜는지에 대해서 궁금합니다.Optional<Member> result = repository.findByName("spring1"); Assertions.assertThat(result) .isPresent() // Optional에 값이 있는지 확인 .get() // 값이 존재할 때만 안전하게 꺼냄 .isEqualTo(member1);혹시 이 코드가 맞다면 Optional<Member> 대신에 Member 클래스를 넣으면 정석인 코드가 되는지 알고 싶습니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
web,was 분리 관련
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]로드맵을 다 돌고 이 강의를 다시 듣고있는데 웹 시스템 구성은 web, was, db로 하는것이 좋다는 말이 귀에 들어왔습니다.강의를 따라하면서 프로젝트를 따라할 때 spring boot 안에 내장되어있는 tomcat을 쓰고있는 것으로 아는데 저희는 따로 web과 was를 따로 분리해서 작업하고 있는게 아닌가요? 만약 따로 분리를 한다면 어떻게 하는것이 따로 하는것이라고 생각할 수 있을까요?
-
미해결처음하는 파이썬 백엔드 FastAPI 입문 (FastAPI부터 비동기 SQLAlchemy까지) [풀스택 Part1-2]
deprecated 경고는 어디서 확인할 수 있나요?
docs나 redoc에서 확인하는 것은 숙지하였는데, api 개발자가 deprecated를 경고받으려면 문서뿐 아니라 response 자체에도 deprecated 되었다는 정보가 포함되어야 할 것 같습니다. header에 포함되어 있나요?
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
sql-error-codes.xml에 없는 DB 종류를 사용할 경우
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]해당 파일을 커스터마이징 해야 하나요 ? 예를 들어 티베로 + 스프링 조합으로 개발을 하게 되면 예외 처리를 개발자가 직접 해줘야 한다고 생각하면 될까요 ?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
h2database 설치 안됨
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]h2database 설치 페이지로 아예 넘어가질 않습니다.사이트의 문제인건가요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
messages.properties로 메시지 관리할 경우 관리 측면에선 편하지만 나중에 프로젝트 분석하는 사람 입장에선 분석이 힘들어질 것 같은데
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]그런 경우 어떤 식으로 보완할 수 있을까요??? (강의보다가 궁금해져서 글 남겨봅니다! )
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
gradle 설정
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. Gradle로 빌드하면 localhost:8080 접속시 index 페이지가 잘나옵니다. 그런데 Intellij로 빌드하면 페이지가 안나오는데 왜 그런건가요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
home.html이 뜨지 않고, index.html이 뜹니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]비슷한 글을 찾아보고 왔으나, 저랑 다르게 @Controller를 작성하지 않은 게 문제라서 올립니다. 저 같은 경우엔 HomeController 파일에 @Controller를 작성했으나, 똑같이 index.html이 뜹니다. 또한 home.html 위치도 템플릿 폴더에 들어가 있는 걸 확인했습니다. 제 경우에는 뭐가 문제인 걸까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
main 실행 화면이 제대로 작동하고 있는 건지 모르겠습니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.영한 님 수업 자료랑 강의 보고 똑같이 작성하고 있는 상태이긴 합니다. 하지만 run을 할 때 실행 장면이 뜨지 않아 이게 무슨 오류가 있는 건지, 아니면 작동이 되고 있는 건지 잘 모르겠습니다. 이렇게 뜨면 무슨 문제가 있는 걸까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
localhost:8080/hello-stiatic.html 에 관한 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]여기에 질문 내용을 남겨주세요.강사님이 알려주신 html 코딩 내용인 hello-static.html과 localhost:8080/hello-static.html에서 페이지 소스 보기로 본 코드 내용이 다른데, 이유가 무엇일까요?그리고 html 코드의 body 부분이 영어일 때는 괜찮은데, 한글 입력시 페이지에서 한글이 깨져서 출력됩니다.1.<hello-staitc.html><!DOCTYPE HTML><><head><title>static content</title><meta http-equiv="Content-Type" content="text/html; charest=UTF-8" /></head><body>정적 컨텐츠 입니다.</body></html> <loacalhost:8080/hello-static.html><!DOCTYPE HTML><html><head> <title>Hello</title> <meta http-equiv="Content-Type" content="text/html; charest=UTF-8" /></head></html>Hello<a href="/hello">hello</a></body></html><script>(function() { var ws = new WebSocket('ws://' + window.location.host + '/jb-server-page?reloadMode=RELOAD_ON_SAVE&'+ 'referrer=' + encodeURIComponent(window.location.pathname)); ws.onmessage = function (msg) { if (msg.data === 'reload') { window.location.reload(); } if (msg.data.startsWith('update-css ')) { var messageId = msg.data.substring(11); var links = document.getElementsByTagName('link'); for (var i = 0; i < links.length; i++) { var link = links[i]; if (link.rel !== 'stylesheet') continue; var clonedLink = link.cloneNode(true); var newHref = link.href.replace(/(&|\?)jbUpdateLinksId=\d+/, "$1jbUpdateLinksId=" + messageId); if (newHref !== link.href) { clonedLink.href = newHref; } else { var indexOfQuest = newHref.indexOf('?'); if (indexOfQuest >= 0) { // to support ?foo#hash clonedLink.href = newHref.substring(0, indexOfQuest + 1) + 'jbUpdateLinksId=' + messageId + '&' + newHref.substring(indexOfQuest + 1); } else { clonedLink.href += '?' + 'jbUpdateLinksId=' + messageId; } } link.replaceWith(clonedLink); } } };})();</script> 출력 내용원하는 출력 값 : 정적 컨텐츠 입니다.실제 출력 값 : <> �뺤쟻 而⑦뀗痢� �낅땲��.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
javx 질문입니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. import관련해서 문제가 생겼습니다.. jakarta는 아예 안됩니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
MVC 패턴의 Controller가 Model과 View를 잇는 징검다리?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요. MVC 관련 궁금한 점이 생겼습니다.전 스프링 MVC 구조를 공부하면서 Model이 Controller와 View 사이의 징검다리 같은 인상을 받았었습니다. 그런데 디자인 패턴 책 등에서 MVC 패턴을 설명할 때 종종 Controller가 View와 Model을 이어 주는 징검다리처럼 묘사되곤 하던데, 저는 이 설명이 잘 납득이 안 되는 것 같아서요.. 이때의 Controller는 스프링 MVC로 치면 일반 Controller가 아니라 FrontController(DispatcherServlet)라고 보면 되나요? FrontController라고 생각하니 좀 납득이 되는 것 같습니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
java -jar오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/)[질문 내용]cmd에서 빌드를 하려고 합니다.gradlew 이랑 gradlew build모두 다 어찌저찌 해 냈는데java -jar에서 자꾸 오류가 나네요.여기저기 알아보고 수정해 봤는데 경로를 찾을 수 없어서 생긴 오류라고 하더라고요프로젝트 폴더는 이렇게 있고gradle.build폴더는 이렇게 있습니다.main파일도 이렇게 있습니다. 아무리 찾아봐도 안보이는데 어디서 잘못된 건지 알 수 있을까요?버젼은 17로 다 맞추어 놓았습니다(환경 변수까지)
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
JPA : 페치 조인과 준영속 상태
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.안녕하세요! 영한님 스프링 관련 강의를 사서 항상 잘 보고 있습니다! 그리고 JPA 관련 공부는 영한님이 쓰신 JPA 책으로 공부하고 있습니다. JPA 관련 질문을 드리고 싶은데 JPA 강의는 사지 않아 질문을 올리지 못하게 되어 부득이하게 여기에 질문하게 되었습니다 죄송합니다 ㅜㅜ 다름이 아니라 JPA 책의 375 페이지, 10장 객체지향 쿼리 언어 파트에서 다음과 같이 페치 조인 전략 사용시 멤버가 준영속 상태가 되어도 나중에 팀을 별도의 쿼리를 날리지 않고 조회가 가능함을 확인했습니다. 책에서도 그렇게 말씀해주셨습니다! 그리고 그 다음에 페치 조인을 사용하지 않은 경우를 적용해보았습니다.String query = "SELECT m FROM Member m"; Member member = em.createQuery(query, Member.class).getResultList().get(0); em.detach(member); System.out.println("Class Type: " + member.getTeam().getClass().getName()); // 프록시 객체임을 확인 System.out.println("Is initialized: " + Hibernate.isInitialized(member.getTeam())); // 초기화 안된 상태 System.out.println("member.getTeam() = " + member.getTeam().getName()); // 별도로 쿼리가 날아감제 예상으로는 member.getTeam() 시 프록시 팀 객체가 형성되고, 물론 초기화는 되지 않은 상태이며 이때 멤버 객체가 준영속 상태이기 때문에 getTeam().getName()에서 예외가 발생할 것이라 생각했습니다. 왜냐하면 member - team은 lazy fetch로 되어있기 때문에 member에서 연결된 team을 조회할 때 추가적인 쿼리를 한번 더 날려야 하는데, 준영속 상태가 되면서 이것이 불가능해질 것이라 생각했기 때문입니다. 그런데 실제로는 추가쿼리를 날려서 값을 가져오는 것을 확인했습니다. 혹시 왜 이런 것인지 알수 있을까요?? 감사합니다. 항상 강의 잘 보고 있습니다!
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
OncePerRequestFilter
OncePerRequestFilter는 요청당 한번만 호출된다고 하는데..수업중에 만드신 LogFilter는 Filter를 상속 받았습니다Filter도 DispatcherType.REQUEST가 기본이면 요청당 한번만 필터가 호출되지않나요?2가지 필터의 차이점을 알고싶습니다
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
회원가입 테스트 오류메세지
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]회원가입 테스트 진행하는데 테스트 자체는 강의와 똑같이 잘 진행됩니다. 오류메세지가 계속 뜨는데 해결을 어떻게 해야되는지는 모르겠네요.--------------오류메세지------------Mockito is currently self-attaching to enable the inline-mock-maker. This will no longer work in future releases of the JDK. Please add Mockito as an agent to your build what is described in Mockito's documentation: https://javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/Mockito.html#0.3WARNING: A Java agent has been loaded dynamically (C:\Users\hyozz\.gradle\caches\modules-2\files-2.1\net.bytebuddy\byte-buddy-agent\1.15.11\a38b16385e867f59a641330f0362ebe742788ed8\byte-buddy-agent-1.15.11.jar)WARNING: If a serviceability tool is in use, please run with -XX:+EnableDynamicAgentLoading to hide this warningWARNING: If a serviceability tool is not in use, please run with -Djdk.instrument.traceUsage for more informationWARNING: Dynamic loading of agents will be disallowed by default in a future releaseOpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended--------------오류메세지------------
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
HandlerAdapter의 응답 형태
HTTP응답을 사용하는 경우, 핸들러어댑터는 DispatcherServlet에게 ModelAndView가 아닌 null을 반환하나요?뷰 템플릿을 사용하는 경우, 핸들러어댑터는 항상 ModelAndView 형식을 반환하나요? 컨트롤러에서 반환값이 ModelAndView라면, returnValueHandler에서 그대로 ModlAndView 형태로 반환컨트롤러 반환값이 viewName이라면, returnValueHandler에서 ModelAndView로 변환해서 반환Spring MVC의 다양한 핸들러 어댑터는항상 ModelAndView 형식또는 null만 반환하나요?제가 이해한 것이 맞을까요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
10분 14초경 templates/basic/items.html이 css가 제대로 적용이안됨
static폴더에 있는 html파일들은 부트스트랩이 강사님의 화면처처럼 잘나오나 templates/basic/items.html이 부트스트랩 css가 제대로 로 적용이안됩니다.templates/basic/items.htm의 코드입니다다른 파일들도 css가 제대로 적용이 안됩니다. <!DOCTYPE HTML> <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="utf-8"> ` <link th:href="@{/css/bootstrap.min.css}" href="../css/bootstrap.min.css" rel="stylesheet"> </head> <body> <div class="container" style="max-width: 600px"> <div class="py-5 text-center"> <h2>상품 목록</h2> </div> <div class="row"> <div class="col"> <button class="btn btn-primary float-end" onclick="location.href='addForm.html'" th:onclick="|location.href='@{/basic/items/add}'|" type="button">상품 등록 </button> </div> </div> <hr class="my-4"> <div> <table class="table"> <thead> <tr> <th>ID</th> <th>상품명</th> <th>가격</th> <th>수량</th> </tr> </thead> <tbody> <tr> <td><a href="item.html">1</a></td> <td><a href="item.html">테스트 상품1</a></td> <td>10000</td> <td>10</td> </tr> <tr> <td><a href="item.html">2</a></td> <td><a href="item.html">테스트 상품2</a></td> <td>20000</td> <td>20</td> </tr> </tbody> </table> </div> </div> <!-- /container --> </body> </html>
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
게시판 mybatis 적용문제
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요mybatis를 체득하고 싶어서 게시판 프로젝트를 한번 해보려고 했는데 잘 안되네요https://drive.google.com/file/d/1ku2NtUWjeSi1OJ2Z7SLsuqqG7Y471BHv/view?usp=sharing파일은 여기있습니다.강의보고 따라하긴 했는데 제가 제대로 이해를 못한건가 싶습니다제가 생각하는 (공부해서 알게 된) 순서는 이렇습니다client의 request요청 - JSON배열로{ "id": 1, "title": "게시글 제목", "content": "게시글 내용" } 이렇게 온다고 가정 Controller에서 request를 @RequestBody 받고 service로 전송Service에서 dto를 param으로 변환하고 param을 mapper 인터페이스의 메서드로 감싸기Mapper 인터페이스에서 전달받은 메서드 이름과 id가 같은 mapper.xml로 보내서 CRUD 실행service Mapper.saveBoard(param)으로 → client에 넘겨줄 responseDto로 param을 보냄create table member( id bigint auto_increment primary key, board_writer varchar(20) not null, board_passwd varchar(20) not null ); create table board( id bigint auto_increment primary key, writer_id bigint not null, title varchar(50) not null, board_contents text not null, board_count int default 0, created_at timestamp default current_timestamp, constraint fk_board foreign key(writer_id) references member(id) on delete cascade ); 테이블은 이렇고클라이언트 실행하면 오류가 납니다;org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): Jay.Board.repository.mybatis.BoardMapper.saveBoard at org.apache.ibatis.binding.MapperMethod$SqlCommand.<init>(MapperMethod.java:229) ~[mybatis-3.5.14.jar:3.5.14] at org.apache.ibatis.binding.MapperMethod.<init>(MapperMethod.java:53) ~[mybatis-3.5.14.jar:3.5.14] at org.apache.ibatis.binding.MapperProxy.lambda$cachedInvoker$0(MapperProxy.java:96) ~[mybatis-3.5.14.jar:3.5.14] at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1708) ~[na:na] at org.apache.ibatis.util.MapUtil.computeIfAbsent(MapUtil.java:36) ~[mybatis-3.5.14.jar:3.5.14] at org.apache.ibatis.binding.MapperProxy.cachedInvoker(MapperProxy.java:94) ~[mybatis-3.5.14.jar:3.5.14] at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:86) ~[mybatis-3.5.14.jar:3.5.14] at jdk.proxy2/jdk.proxy2.$Proxy63.saveBoard(Unknown Source) ~[na:na] at Jay.Board.service.BoardService.saveBoard(BoardService.java:27) ~[main/:na] at Jay.Board.controller.HomeController.saveBoard(HomeController.java:37) ~[main/:na] at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[na:na] at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:257) ~[spring-web-6.2.2.jar:6.2.2] at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:190) ~[spring-web-6.2.2.jar:6.2.2] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) ~[spring-webmvc-6.2.2.jar:6.2.2] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:986) ~[spring-webmvc-6.2.2.jar:6.2.2] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:891) ~[spring-webmvc-6.2.2.jar:6.2.2] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-6.2.2.jar:6.2.2] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1088) ~[spring-webmvc-6.2.2.jar:6.2.2] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:978) ~[spring-webmvc-6.2.2.jar:6.2.2] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) ~[spring-webmvc-6.2.2.jar:6.2.2] at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:914) ~[spring-webmvc-6.2.2.jar:6.2.2] ..... 이 이상은 제가 모르겠습니다….mapper.xml이 반환되지 않는게 문제 같은데 어느부분이 문제가 되서 이러는지 도통 알 수 없네요.. 오늘 이것만 6시간째 붙잡고 있습니다..프로그램 흐름의 순서와 그 각각 하는 일들이 어떤 일들이 펼쳐지는지를 이해하고 코딩을 하고싶습니다…