IT/development

[mybatis] 상세 조회 시 복수값 추가 조회(feat. vo & map)

알 수 없는 사용자 2022. 11. 22. 06:55
반응형

목차

    상세 조회 시 복수값 추가 조회 😗

    기존 상세조회 API에서 상세 조회 시 해시태그와 같은 복수값을 추가로 조회해야 되는 경우가 생겼다.

    가져와야 되는 필드값은 2개밖에 안되므로 추가로 vo를 만들고 싶지 않아 아래처럼 수정했다.

     

    Controller

    기존에는 Controller에서 return으로 VO로만 받았던 걸 map으로 받도록 변경, VO결과와 tag리스트 결과를 map에 담아서 최종적으로 return

    /**
    	 * 상세
    	 * @param
    	 * @param
    	 * @return
    	 */
    	@Operation(summary = "멤버 상세 조회", description = "멤버를 상세 조회한다.")
    	@Parameters({@Parameter(name = "mem_no", description = "회원 일련번호", required = true)})
    	@GetMapping("/{mem_no}")
    	public HashMap<String, Object> detail(
    			@PathVariable Long mem_no,
    	) throws Exception{
    		HashMap<String, Object> result = new HashMap<String, Object>();
    		MemberVO memberVO;
    		try {
            	// 회원 상세 목록
    			memberVO = memberService.selectmemberDetail(mem_no);
    			// 태그 목록
    			List<String> tagList = null;
    			tagList = memberService.selectTagList(mem_no);
    
    			result.put("memberVO", memberVO);
    			result.put("tagList", tagList);
    
    		}catch(Exception e) {
    			Exception.Error e = e.getError();
    			result.put("error_code", e.getError_code());
    			result.put("error_msg", e.getError_msg());
    		}
    		return result;
    	}

     

    Service

    // 회원 상세조회
    public MemberVO selectMemberDetail(Long mem_no) throws Exception {
    
        HashMap<String, Object> paramMap = new HashMap<String, Object>();
        paramMap.put("mem_no", mem_no);
        MemberVO memberVO = memberMapper.selectMemberDetail(paramMap);
    
        return memberVO;
    }
        
    // 회원 태그 조회
    /**
     * 템플릿 필터값 상세 조회
     * @param template_seq
     * @return
     * @throws ServiceException
     */
    public List<String> selectTagList(Long mem_no) throws Exception{
        return memberMapper.selectTagListDetail(mem_no);
    }

     

    mapper

    // 회원 상세조회
    public MemberVO selectMemberDetail(HashMap<String, Object> param);
    
    // 회원 태그 목록 조회
    public List<String> selectTagList(Long mem_no);

     

    xml

    <!-- 회원 필터 목록 조회 -->
    	<select id="selectTagList" resultType="map">
    		SELECT    a.*
    			 	, c.tag_type
    			 	, c.tag_name
    		FROM member_tag_mapping a
    				 LEFT OUTER JOIN member b ON a.mem_no = b.mem_no
    				 LEFT OUTER JOIN tag c ON a.tag_no = c.tag_no
    		WHERE b.mem_no = #{mem_no}
    	</select>
    <!-- 회원 상세 조회 -->
    <select id="selectMemberDetail" parameterType="HashMap" resultType="MemberVO">
        SELECT *
        FROM member
        WHERE mem_no = #{mem_no}
    </select>
    반응형