20/11/3

8. 상세페이지 뿌려주기
db내용 메모
1) index.jsp를 새로 만들어서 에 새로운 요청명령어 등록 : 상품 상세페이지 요청
2) web.xml 할일없음
ㄱ.
3) board-servlet.xml에서 요청명령어에 따라 처리해주는 DetailActionController 설정
4) DetailActionController 제작
ㄱ. 어노테이션 @Controller, @Autowired(Board dao), @RequestMapping("/detail.do") 설정
ㄱ-1. 에러발생 controller is not an annotation type https://galid1.tistory.com/506 ▶ import부분 삭제
ㄴ. dao의 내용을 list에 담아옴
ㄷ. modelandView를 통해 전달
ㄹ. return함
5) detail.jsp 에서 뿌려줌
ㄱ. list를 getAttriube 하여 받아옴
ㄴ. while문을 통해 dto의 내용을 받아옴
**추가** 레코드를 가져올 dto가 BoardCommand가 아니라, DetailCommand이다!
ㄷ. getter메서드로 가져옴
ㄹ. jsp에 뿌려줌
6) dataAccessContext-local.xml 할 일 없음
7) SqlMapConfig.xml 할 일 없음
**추가**
SqlMapConfig.xml에서 테이블별로 <mapper> 태그로 추가해야한다.
그렇단 얘기는 Board.xml도 새로 만들어야하는 것이고
DetailCommand도 새로 만들어야하는 것이고
BoardDAO 인터페이스도 작성해야하고
ㄴ를 상속받은 Dao를 작성해야한다.
간단한 crud이므로 Mybatis2로 작성해보도록한다.
 
근데 Mybatis2로 작성하면 전부다 Mybatis2로 작성해야한다고한다. (두개짬뽕이 불가능하다)
Mybatis2는 sql구문도 그대로 작성할 수 있는 이점이 있고, 환경설정이 쉬우므로 Mybatis2로 진행하기로한다.
그러기위해서는 기존 파일을 Mybatis2로 수정해야한다.
 
환경설정이 잘 될지 알수 없으므로, 리스트 보기까지 수행했던 백업파일 MyTest3에서 Mybatis2로의 진행을 진행한다.
Mybatis2란? xml을 파일로 불러오지 않는 환경설정을 말한다! ~Dao에서 sql구문의 결과를 받아서 처리한다!
해야할 일
1. dataAccessContext-local.xml에서
ㄱ.<property>(값을 WEB-INF/SqlMapConfig.xml로 가지는) 태그 삭제
ㄴ.SqlSessionTemplate 빈즈를 삭제한다.
ㄷ.코드추가(이 Dao는 sql구문이 적힐 파일을 말한다)
<bean id="memberDao" class="org.mybatis.spring.mapper.MapperFactoryBean">
       <property name="sqlSessionFactory" ref="sqlSessionFactory" />
       <property name="mapperInterface" value="dr.mini.dao.MemberDao" />
</bean>
3. impl과 SqlMapCong.xml파일(쿼리문 적힌 xml파일을 로드하는 파일), Board.xml이 삭제되고(필요가없다)
4.memberDao(인터페이스)에 Board.xml에 적었던 @Select 등의 어노테이션을 사용해서 쿼리문을 작성한다.
 
▷ 500에러로 DI에 실패했다는 에러가 뜨는데 어떻게 고쳐야할지모르겠다... MyTest3파일 . 강사님께 여쭤본다.
 

 
뭘..햇는지 햇갈리는데.. 환경설정을 잔뜩 했어요...
 
에러 발생 (xml파일의 id값에 부주의해서 생긴 에러)
threw exception [Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException
mapper에서 같은 id를 사용할경우 나는 에러라고한다.
Detail.xml 의 id를 list2로 변경
▶DetailDAO(임플리멘트)를 list2로 변경
▶SqlMapDetail(상속받은애)의 id를 list2로 변경
▶DetailActionController의 list2로변경
 
컨트롤러는 모두 무사히 통과되었고, Null 떨어짐
 

 
11/4
목표 1. : 상품 정보를 화면에 뿌린다.
목표 2. :