전체 게시글 수 확인
SELECT count(*) FROM board;
전체 게시글 삭제
DELETE FROM board;
bno가 1000번이고 writer가 Tom인 게시글만 삭제한다.
DELETE FROM board WHERE bno = 1000 and writer = "Tom"
//마이바티스
//bno와 writer를 parameter map으로 받는다.
<delete id="delete" parameterType="map">
DELETE FROM board WHERE bno = #{bno} and writer = #{writer}
</delete>
게시물 추가
INSERT INTO board(title, content, writer)
VALUES ("title2", "content2", "Jane");
//마이바티스
//parameter로 Board 객체를 받는다.
<insert id="insert" parameterType="BoardDto">
INSERT INTO board(title, content, writer)
VALUES(#{title}, #{content}, #{writer})
</insert>
게시물 업데이트
UPDATE board
SET title="title_1" , content="content_1", up_date=now()
where bno = 1091
//마이바티스
<update id="update" parameterType="BoardDto">
UPDATE board
SET title = #{title},
content = #{content},
up_date = now()
WHERE bno = #{bno}
</update>
게시물 view count update
UPDATE board SET view_cnt = view_cnt + 1 where bno = 1087;
//마이바티스
<update>
UPDATE board
SET view_cnt = view_cnt +1
WHERE bno = #{bno}
</update>
Mybatis 동적 SQL로 검색조건 설정하기
option유형에 따라 검색 조건을 다르게 설정해준다.
<sql id="searchCondition">
<choose>
<when test='option="T"'>
AND title LIKE concat('%', #{keyword}, '%')
</when>
<when>
AND writer LIKE concat('%', #{keyword}, '$')
</when>
<otherwise>
AND(title LIKE concat('%', #{keyword}, '%')
OR content LIKE concat('%', #{keyword}, '%'))
</otherwise>
</choose>
</sql>
🖍 LIKE 연산자
문자열의 내용을 검색하기 위해서는 LIKE 연산자를 사용할 수 있다.
SELECT name, height FROM usertbl WHERE name LIKE '김%'
위의 select문의 경우 LIKE 연산자에 %를 사용해서 성이 김인 이름 문자열 전체을 출력한다. 반대로 _는 한글자를 의미하는데 다음 쿼리문과 같이 사용한다.
SELECT name,height FROM usertbl WHERE name LIKE '_한주'
위의 select문의 경우 LIKE 연산자에 _를 사용해서 한주라는 이름을 가진 모든 성씨의 이름을 출력한다.
📌 %나 _가 검색하고자 하는 문자열의 맨 앞에 올때에는 MySQL 성능에 좋지 않기 때문에 이 부분을 잘 고려해서 사용할 필요가 있다.
검색조건으로 게시글 정렬
<select id="searchPage" parameterType="searchCondition" resultType="BoardDto">
SELECT * FROM board
WHERE true
<include refid="searchCondition" />
ORDER BY reg_date DESC, bno DESC
LIMIT #{offset}, #{pageSize}
</select>
<choose>
<when test="조건식1"> 쿼리문1 </when>
<when test="조건식2"> 쿼리문2 </when>
<when test="조건식3"> 쿼리문3 </when>
<when test="조건식4"> 쿼리문4 </when>
<otherwise> 쿼리문5 </otherwise>
</choose>