[SpringBoot/Mybatis] Parameter '' not found. Available parameters are []

지영·2023년 7월 11일
0

상황

로그인을 구현하는데
컨트롤러 -> 서비스 -> mybatis 순으로 진행되는 거였다

컨트롤러

    /* 로그인 페이지 */
    @RequestMapping("/LoginPage")
    public ModelAndView loginPage(){
        ModelAndView mav = new ModelAndView("member/login");
        return mav;
    }

    /* 로그인 */
    @PostMapping("/LoginAction")
    public ModelAndView loginAction(TestMemVO memVO){
        ModelAndView mav = new ModelAndView("member/login-success");
        System.out.println(memVO);
        TestMemVO rtnVO = testService.loginAction(memVO);
        return mav;
    }

서비스

  // 로그인
    public TestMemVO loginAction(TestMemVO memVO) {
        System.out.println("service " + memVO.getMemId() + memVO.getMemPw());
        TestMemVO rtnVO = new TestMemVO();

        try {
            if(memVO.getMemId()!= null && memVO.getMemPw() != null) {
                System.out.println("try문 실행됨!");
                rtnVO = hackTestSlave.login(memVO.getMemId(), memVO.getMemPw());
                System.out.println("rtnVO" + rtnVO);
                if(rtnVO == null)
                    System.out.println("회원 정보가 없습니다");
            } else{
                System.out.println("정보가 제대로 입력되지 않았습니다");
            }

        } catch (Exception e) {
            throw new RuntimeException(e);
        }
        return rtnVO;
    }

mybatis

    @Select("SELECT * FROM oj_test.member_table WHERE mem_id = #{memId} AND mem_pw = #{memPw}")
    TestMemVO login(String memID, String memPw);

그런데 이런 오류가 떴다

Parameter 'memId' not found. Available parameters are [memPw, param1, memID, param2]

memId를 못찾겠다니
어디서부터 전달이 안된건가 해서 찾아봤더니
서비스단까지 잘 갔고
try문도 정상적으로 실행됐는데
mybatis로 넘어갈때가 문제였다

해결

도저히 모르겠어서 구글에 검색해 본 결과

mybatis의 파라미터가 2개 이상 넘어가면 따로 지정을 해줘야한다는 것이였다

여러 방법이 있었지만
나는 @Param annotation을 이용하기로 했다.

    @Select("SELECT * FROM oj_test.member_table WHERE mem_id = #{memId} AND mem_pw = #{memPw}")
    TestMemVO login(@Param("memId") String memId, @Param("memPw")String memPw);

mybatis의 파라미터부분만 수정하면 됐다
수정 후 실행해보니 잘 되는 것을 확인할 수 있었다

@Param에 대해 더 공부해봐야겠다.

참고

profile
💌

0개의 댓글