플랑크톤
1k
2019-07-01 08:51:57
8
730

쿼리문에 이상한게 들어갔는데 이유가 뭘까요..?


게시판 페이징처리 만들고 있습니다..

일단 게시판을 들어가면 첫번째 페이지는 잘 나오는데..

2번을 클릭하면


데이터가 아무것도 나오지 않습니다.. 이게 왜이러나 쿼리문을 확인해봤더니

마지막 where절이 sporting goods까지만 나와야하는데 ?cPage=2까지 나오고있어서 데이터가 안나오는것같습니다.2번을 누른후 3번을 누르면 ?cPage=2?cPage=3 이렇게 되어버립니다..


근데 ?cPage가 대체 어디서 꼬엿는지 모르겠습니다..


컨트롤러

dao


mybatis 쿼리문 입니다..


cPage가 대체 어디서 꼬엿을까요..? ㅠㅠ



0
  • 답변 8

  • 사는게힘듭니다
    2019-07-01 09:03:33

    service쪽으로 List를 받아올떄 파라미터로

    category, cPage, numPerPage 3개를 넘기셨고 

    mybatis쪽에서 parameterType을 String으로 주셨으면


    저 3개의 파라미터가 하나의 문자열로 연결되어 파라미터로 넘어갑니다.

    mybatis는 기본적으로 파라미터를 1개만 받게 되있으며

    2개이상의 파라미터를 넘기실때는 VO , DTO, HashMap 또는 @Param 어노테이션을 사용해주셔야 합니다.


    컨트롤러쪽 부분에 이렇게 추가해줘보세요

    Map<String,Object> map = new HashMap<String,Object>();


    map.put("category",category);

    map.put("cPage",cPage, );

    map.put("numPerPage",numPerPage);


    service.gallList(map)


    mybatis에서도 parameterType을 hashmap 으로 하시면됩니다.

  • 플랑크톤
    1k
    2019-07-01 09:27:14

    그래도 같은 문제가 발생하네요.. 매개값으로 줄때 이렇게하면 안되는건가여..?



  • 플랑크톤
    1k
    2019-07-01 09:28:02

    지금까진 페이징처리할때 이런식으로 해서.. ㅠㅠ

  • 사는게힘듭니다
    2019-07-01 10:11:52

    DAO에서 map에 담긴값을 꺼내지말고

    mybatis에서 그 값을꺼내쓰세요


    쿼리문에 페이징 파라미터가 들어가는 부분에

    #{cPage} 이런식으로 쓰시면됩니다.


    맵안에 저 3개가 다 담겨있으니 

    mybatis에선 저 3개를 다쓸수있어요.

  • 플랑크톤
    1k
    2019-07-01 10:21:32

    제가 작성한 쿼리문에는 #{cPage}가 들어갈곳이 없어서여..



    이것같은경우 페이징처리는



    이런 쿼리문 사용해서 처리했구여..

  • minarai
    2k
    2019-07-01 10:56:15

    쿼리던질때 값을 쓰는애들만 보내주면됩니다. 카테고리뒤에는보내지않으면되죠

  • 플랑크톤
    1k
    2019-07-01 11:20:37

    해결했습니당.. 쿼리스트링으로 보낼때 & 이걸로 안묶어서 통재로 합쳐져서 보내졋던거였네여..


    알려주신분들 감사합니당

  • rezigrene
    1k
    2019-07-01 11:21:17

    프론트엔드 문제 같네요 2번 링크가 잘못 생성된듯

  • 로그인을 하시면 답변을 등록할 수 있습니다.