마이바티스의 동작쿼리, 검색조건 전달

Hwawon_2·2022년 4월 14일
0

BoardMapper.java

Criteria cri -> SearchCriteria cri 수정

BoardService.java
BoardMapper.java에서 수정했으니 BoardService.java 여기도 수정해줌

BoardServiceImpl.java
당연히 여기도 수정

검색어 없이 접속했을때도 전체 글을 가져오는 구문은 작동해야하고, 검색어가 추가되었을때만 추가된 검색어에 맞게 구문 추가가 이루어져야 합니다.
BoardMapper.xml

이 구문을 한번끊어줘야 합니다.
limit 부분을 잘라줍니다.

(c데이타도 2개로 나뉨)

mapper.xml에서도 c:if와 유사하게 사용할 수 있습니다.
그러나 문자열 비교는 eq로 할 수 없으며 위와같이 toString()메서드를 호출해서 대신하는 점의 주의.
아래 구문은 쿼리문 호출시 searchType이라는 명칭으로 전달하는 변수 내부의 자료를 검사해서 해당 구문을 실행할지 말지 결정합니다.

써치타입이 null 이라면 안적고
써치타입이 == t인경우
제목(title) like 키워드 and
특정한 키워드를 포함된 여부를 확인한다음에 그거에 로우넘을 매김
(단일 조건)

실행하면

써치타입을 제목으로 (t)로 하고 키워드를 '글'이라고 하면
제목에 글이 들어간 게시글이 나옵니다.

c,w 도 추가해보겠습니다.

실행해보면
c- 산다


content에 '산다'가 있는글 글이 나오는거 확인 가능!

w-글쓴이

writer가 '글쓴이'가 들어가 있는 글이 나오는거 확인 가능!


베고팡으로 쳤을때 마지막글은 1639페이지인데 그이후도 계속 나오고 있습니다.

마지막글 로 페이지를 안나오게 할려면은
countPage도 SearchCriteria를 받을수 있게 수정 해야 합니다.

getBoardList에서 사용하는 검색조건/키워드에 따른 동적조건절을
countpageNum쪽에서 돌아가도록 메서드가 SearchCriteria를 받게 개선해서 버튼개수까지 맞출수 있도록 처리하겠습니다.

SELECT COUNT(*) FROM board_tbl 에다가 WHERE 를 붙여주고
위에 썻던거 복사


bno > 0 // where가 받을 수 있는 구문을 하나더 넣어준다.

그리고

BoardMapper.java

Criteria cri -> SearchCriteria cri 수정

BoardService.java
BoardMapper.java에서 수정했으니 BoardService.java 여기도 수정해줌

BoardServiceImpl.java

BoardController.java

실행하면
t - 배고팡

c- 북

w - 노트

마지막글 이후로 빈 페이지가 안나오는걸 확인 할수 있다

이제 2개 이상의 like조건절은()묶어서 처리합니다.

TC

cw

tcw

써치타입에 따라 나오는걸 확인 가능

countpageNum에도 위에 썻던걸 복사 붙여넣기 해주면

마지막글 이 나오는 페이제 이후 안나오는걸 확인 할 수 있다.

여기서 단순히 listPage만 바꾸는것은 의미가 없습니다.
countpageNum 조건에 따라 수치가 달라지기 때문에 같이 바뀌어야 합니다.
그러나 전체 구문을 집어넣기엔 두 번 이상 작성하는 부담이 생깁니다.

특정 구문 부분을 변수처럼 저장할 수 있는 sql 태그와
그 sql 태그를 변수처럼 호출할 수 있는 include 태그를 써보겠습니다.
먼저 조건절을 바깥으로 빼서 (일반적으로 최상단 mapper 태그 바로 아래에) sql태그에 넣고 id 속성을 search로 줍니다.


(기존에 작성했던걸 복사하고 지워서 붙여줌)

다음, 필요한 부분에 include refid="search"와 같이
refid 속성에 sql태그에서 저장한 명칭을 집어넣으면
변수 내 자료가 호출되듯 쿼리문이 들어갑니다.
select id="getList" resultType="com.ict.domain.BoardVO"> 이거 안에

sql 아이디가 써치여서 인클루드 안에 써치가 들어감

countPageNum 에도 인클루드 작성해주시면 됩니다. (아까 작성했던거 지워줌)

실행해주면

잘 나오는거 확인 가능


이번에는 글이 들어가거나, 다시 목록으로 돌아올때에 검색조건이나 페이지 번호가 유지되도록 링크주소에 파라미터형식으로 정보를 붙여보내겠습니다.
boardDetail.jsp

boardList.jsp
페이지 번호 추가

실행하면


글목록을 누르고 나와도 페이지가 유지되는것을 확인할수 있다.

profile
코딩 일기장

0개의 댓글