초급코딩
2021-06-23 14:31:45
9
176

고수님들 도와주세욧....



안녕하세요~ 코딩 갓 배우기 시작 한 초보입니다~!!!!!!!!

검색기능 후 페이징 처리를 하려고 하는데 검색 하고 나서 검색 타입 그리고 검색 값을 같이 보내주 고싶은데 쿼리를 잘 몰라... Mapper 에서 막혔습니다...ㅠㅠ


<!--검색 boardlist 가져오기--> 부분에서 어떻게 하면 검색 타입, 값을 받아올수 있을 까요????


그기고 검후 게시글 갯수 가져오기 쿼리는 맞나요???



제발 부탁드립니다.ㅠㅠㅠ

0
  • 답변 9

  • 웹개발자해보자
    203
    2021-06-23 14:50:51

    검색한걸 가져오려면 WHERE 줘야하지않나요?

    SELECT COUNT(BNUMBER) FROM BOARD210608 여기에 choose넣으시면 될거같은데요?

  • 초급코딩
    2021-06-23 15:01:48

    웹개발자해보자

    <!-- 검색 게시글 갯수 가지고 오기 -->
    	<select id="slistcount" resultType="int">
    		SELECT COUNT(BNUMBER) FROM
    		BOARD210608 <include refid="search"></include>
    	</select>
    <sql id="search">
    		<choose>
    			<when test="type == 'bproduct'">
    				WHERE BPRODUCT LIKE '%'||#{word}||'%'
    			</when>
    			<when test="type == 'bbrand'">
    				WHERE BBRAND LIKE '%'||#{word}||'%'
    			</when>
    			<when test="type == 'bwriter'">
    				WHERE BWRITER LIKE '%'||#{word}||'%'
    			</when>
    		</choose>
    	</sql>


    지금 이런 식으로 작성을 했습니다.


    근데 검색 총 게시글 갯수가 10개 그래서 5개씩 2페이지가 나오는데


    검색 했을 때 검색 게시글이 1개만 있어도 페이지가 2개 씩 나옵니다..ㅠㅠ

     

    별에 별짓을 다해도 똑같고요.ㅠㅠ

  • 초보킴
    300
    2021-06-23 15:22:20

    쿼리가 아닌 다른쪽을 봐야 할것 같은데요 ?

  • 웹개발자해보자
    203
    2021-06-23 15:25:09

    qigjwog

    저도 신입개발자지만  

    저쿼리는 검색된 총갯수를 불러오는쿼리이고 저불러온값을 넣어주는곳이있을겁니다 그부분을 확인하시면될거같습니다.

  • 초급코딩
    2021-06-23 15:32:04

    웹개발자해보자  초보킴 

    // 검색
    	public ModelAndView BoardSearch(String searchType, String keyword, int page) {
    		System.out.println("service + boardSearch : " + searchType + "+" + keyword);
    		mav = new ModelAndView();
    		Map<String, String> searchMap = new HashMap<String, String>();
    		searchMap.put("type", searchType);
    		searchMap.put("word", keyword);
    		System.out.println("service + boardSearch : " + searchType);
    		System.out.println("service + boardSearch : " + keyword);
    		// 검색
    		List<BoardDTO> board = bdao.BoardSearch(searchMap);
    		if (board.size() > 0) {
    			System.out.println("service + boardSearch : 검색 내용 있음");
    			// 게시글
    			mav.addObject("boardList", board);
    			System.out.println("service + boardSearch : " + board);
    			System.out.println("service + boardSearch : " + board.size());
    			// 게시글 갯수
    			int listCount = bdao.sListCount();
    			int startRow = (page - 1) * PAGE_LIMIT + 1;
    			int endRow = page * PAGE_LIMIT;
    			PageDTO paging = new PageDTO();
    			paging.setStartRow(startRow);
    			paging.setEndRow(endRow);
    			System.out.println("service + paging : " + paging.toString());
    			// 페이징
    			List<BoardDTO> boardList = bdao.sBoardPaging(paging);
    			int maxPage = (int) (Math.ceil((double) listCount / PAGE_LIMIT));
    			int startPage = (((int) (Math.ceil((double) page / BLOCK_LIMIT))) - 1) * BLOCK_LIMIT + 1;
    			int endPage = startPage + BLOCK_LIMIT - 1;
    			if (endPage > maxPage) {
    				endPage = maxPage;
    			}
    			paging.setPage(page);
    			paging.setStartPage(startPage);
    			paging.setEndPage(endPage);
    			paging.setMaxPage(maxPage);
    			mav.addObject("searchType", searchType);
    			mav.addObject("keyword", keyword);
    			mav.addObject("paging", paging);
    			mav.setViewName("PageSearch");
    			System.out.println("service + paging : " + boardList.toString());
    			System.out.println("service + paging : " + boardList.size());
    		} else {
    			System.out.println("service + boardSearch : 없음");
    			mav.setViewName("PageSearchNone");
    		}
    		return mav;
    	}


    값을 받아오는 곳이 service 이곳인데 페이징 처리할 때 값을 잘 넘겨 준것 같은데... ..ㅠㅠ

  • 웹개발자해보자
    203
    2021-06-23 16:07:23

    qigjwog 

    addObject에 boardList 안넣어주신거 아닌가요

  • 웹개발자해보자
    203
    2021-06-23 16:10:19
    List<BoardDTO> boardList = bdao.sBoardPaging(paging);

    왜 이부분 위에서 넘겨주는거죠?? 순서대로 동작할텐데

  • 초급코딩
    2021-06-23 16:20:50

    웹개발자해보자

    addObject 내려서 해봤습니다!!! 근데... 똑같은 결과가 나옵니다ㅠㅠ

  • 웹개발자해보자
    203
    2021-06-23 16:30:48


    public ModelAndView boardlist(int page) {
    		mav = new ModelAndView();
    		int listcount = bDAO.listcount();
    		int startRow = (page-1)*PAGE_LIMIT + 1;
    		int endRow = page*PAGE_LIMIT;
    		
    		PageDTO paging = new PageDTO();
    		paging.setStartRow(startRow);
    		paging.setEndRow(endRow);
    		List<BoardDTO> boardList = bDAO.boardlistpaging(paging);
    		
    		int maxPage =(int)(Math.ceil((double)listcount/PAGE_LIMIT));
    		int startPage = (((int)(Math.ceil((double)page/BLOCK_LIMIT))) -1) * BLOCK_LIMIT + 1;
    		
    		int endPage = startPage + BLOCK_LIMIT -1;
    		if(endPage>maxPage) {
    			endPage = maxPage;
    		}
    		
    		paging.setPage(page);
    		paging.setStartPage(startPage);
    		paging.setEndPage(endPage);
    		paging.setMaxPage(maxPage);
    		
    		mav.addObject("paging", paging);
    		mav.addObject("boardList", boardList);
    		mav.setViewName("boardv/BoardList");
    		
    		return mav;
    	}

    저가 학원다닐때 했던건데  뷰쪽에문제있을수도 있는데 페이징 이해하시고 하시는건가요?? 

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