07 게시판 검색 기능 추가하기(1)
게시판 검색 기능 추가하기(1)
1) 게시판 검색
>> 검색을 누르면 option과 keyword가 컨트롤러에 전송 된다
이제까지는 page와 pageSize만 전송했지만 option과 keyword도 추가될 것이다
2) MyBatis의 동적 쿼리(1) - <sql>과<include>
- 공통 부분을 <sql>로 정의하고 <include>로 포함시켜 재사용
2) MyBatis의 동적쿼리(2) - <if>
>> if else로 사용할 수 없고, if만 사용가능
>> A : 내용+제목, T : 제목, W : 작성자
>> WHERE true이가 들어간 이유
true가 없다면? WHERE AND가 SQL 문법 에러가 발생한다
그럼 AND가 없다면? 조건에 맞는게 여러개 일 수 있기 때문에 AND를 넣어줘야 한다
조건이 연결되려면 AND, OR가 연결되어야한다
※ if문은 위 A T W 조건중에 여러개가 맞을 수있다
- 검색기능에서는 하나의 조건만 필요하므로 적합하지 않다
2) MyBatis의 동적 쿼리(3) - <choose> <when>
>> if-else와 비슷하다
>> ①번의 조건이 true라면 나머지 ②,③번은 실행되지 않는다
※ LIKE() 함수
LIKE 함수는 문자열 내에서 내가 원하는 문자열을 찾는 함수입니다
LIKE함수는 WILDCARDS 문자들과 함께 쓰입니다
※ 와일드 카드
>> - ← 언더스코어라고 부른다
ex)
2) MyBatis의 동적쿼리(4) - <foreach>
※ in
wherer bno=1, where bno=2, where bno=3 여러개 일 때는
where bno in (1,2,3)을 사용
>> collection="array"의 값을 item=“bno"에 하나씩 담고
item="bno"의 값을 → #{bno}에 전달한다
MySQL
>> MySQL에서는 concat을 넣어줘야한다 오라클은 X
>> NOT 은 !=의미와 같다
2-1) 실습
SearchCondition.java(작성)
① page=1, pageSize=10, offset=0;, keyword=" ";, option=" ";
각각 기본값을 넣어주었다. 컨트롤에서 값이 안들어오면 사용하게 된다
② Getter and Setter 생성, toString 생성
③ 기본생성자 생성
④ offset을 제외한 생성자 생성
mybatis-config.xml
boardMapper.xml
>> 각각 생성
boardDaoImpl.java
>> boardMapper.xml 에 대한 메서드 생성
boardDao.java
>> boardDaoImpl.java 에 대한 메서드 생성
>> boardDao.java는 boardDaoImpl.java의 인터페이스
BoardDaoImplTest.java
>> 둘다 테스트를 통과하였다
※bgee 사용법
>> pom.xml에 1,16버전을 설치해주었다
>> 생성해준다
logback.xml
log4jdbc,log4j2,properties
rootcontext.xml
결과 확인
BoardDaoImplTest.java
>> 테스트 실행하게되면
>> 콘솔창에 MySQL데이터를 시각적으로 확인할 수 있다
>> 에러나 다른 MySQL의 에러를 좀 더 쉽게 찾아 낼 수 있다