spkrgg
80
2020-01-07 17:01:43 작성 2020-01-07 17:03:00 수정됨
7
1175

스프링에서 mybatis 사용하여, selectlist시 비어있는 List를 반환합니다.


안녕하세요! 초보 코딩러입니다.



mapper 부분 코드입니다


dao 부분 코드입니다



service 부분입니다


컨트롤러 부분입니다


그리고 db입니다

System.out.println(list.get(1)); 을 했을 시 콘솔창입니다



컨트롤러에서 System.out.println(list.get(1)); 을 하면, list에서 index 1에 해당하는 값이 출력이 되어야 하는데, 자꾸 빈 list가 출력이 됩니다.

해당 컨트롤러에서 위 코드와 같이 UserVO 형식으로 selectList 해서 List에 담아서 jsp에 출력하는 코드가 있는데, 그 코드는 잘됩니다만, 이 코드만 유독 빈 list만 출력됩니다.. ㅠㅠ 

쿼리문, dao부분, service 부분, controller부분이 그 코드와 완전히 유사한데, 왜 안될까요? 1시간째 삽질중인데, 뭐가 문제일까요? 쿼리는 HeidiSQL에서 실행해보니, 잘 됩니다... 

조금이라도 제가 놓친부분이 있는걸까요..? ㅠㅠ

0
  • 답변 7

  • Java .
    2020-01-07 17:06:39

    테이블의 있는 컬럼명(알리아스)와 VisitcountVO 객체의 필드들의 이름을 같게 해주시면 됩니다.

  • 배워보즈아아
    40
    2020-01-07 17:23:07 작성 2020-01-07 17:23:21 수정됨

    mapper에서 ResultMap 설정해주세요

  • spkrgg
    80
    2020-01-09 11:13:53

    Java개발자입니다 님 답변 감사합니다!

    VisitcountVO 필드명과 DB의 컬럼명도 같은데, 이와 같은 현상이 발생합니다ㅠㅠㅠ 혹시 다른 문제가 있어서 이런것일까요?

  • spkrgg
    80
    2020-01-09 11:18:55

    배워보즈아아 님 답변 감사합니다!


    위에 mapper 사진 부분에서 resultType으로 UserVO를 리턴하는 쿼리도 지금 제가 올린 질문과 똑같이 List<UserVO> 로 받습니다만, List<UserVO>는 잘 받아지는데,  List<VisitcountVO>로 받아지는 것만 안됩니다. resultType이 아닌 resultMap 으로 해야하는 이유가 있을까요?



  • 배워보즈아아
    40
    2020-01-09 12:48:10 작성 2020-01-09 12:57:49 수정됨

    -- mybatis-config.xml 부분
    
    <!-- 별칭 지정 -->
    <typeAliases>
    	<typeAlias type="vo경로" alias="visit"/>
    </typeAliases>
    <!-- sql문들을 지닌 mapper.xml 등록 -->
    <mappers>
    	<mapper resource="mapper.xml경로"/>
    </mappers>
    
    -- mappr.xml 부분
    <resultMap type="visit" id="visitResultMap">
    	<id property="visit_id" column="VISIT_ID"/>
    	<result property="visit_ip" column="VISIT_IP"/>
    	<result property="visit_time" column="VISIT_TIME"/>
    	<result property="visit_refer" column="VISIT_REFER"/>
    	<result property="visit_agent" column="VISIT_AGENT"/>
    	<result property="visitor_name" column="VISITOR_NAME"/>
    </resultMap>
    <select id="getvisitorinfo" resultMap="visitResultMap">
    	select visit_ip, visit_time, visit_agent 
    	from visit_count
    	order by visit_time asc;
    </select>
    해보시겠어요?
    기본적으로 vo에있는 필드명과 DB 컬럼명과 같아야하는데, resultMap을 이용해서 vo필드명과
    db컬럼명을 이어준다고 생각하시면 됩니다.
  • spkrgg
    80
    2020-01-09 13:54:04
    배워보즈아아 님 답변 감사합니다ㅠ 적어주신 코드대로 다 적용해보아도 똑같이 비어있는 List를 반환하네요ㅠㅠㅠㅠ 삽질을 더 해야할 것 같습니다...
  • spkrgg
    80
    2020-01-09 13:57:36
    아... 해결했습니다... List.size() 해서 찍어보니 데이터 개수만큼 출력이 되네요ㅠㅠㅠㅠㅠㅠ 아 너무 감사합니다!
  • 로그인을 하시면 답변을 등록할 수 있습니다.