imboard
Version:
Most convenient platform for webpage development.
282 lines (270 loc) • 9.84 kB
text/xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="comment">
<resultMap type="CommentVo" id="commentResult">
<result column="BOARD_ID" property="boardId" />
<result column="BOARD_NAME" property="boardName" />
<result column="ARTICLE_SEQ" property="articleSeq" />
<result column="SEQ" property="seq" />
<result column="CONTENT" property="content" />
<result column="REGISTER_DATE" property="registerDate" />
<result column="GOOD" property="good" />
<result column="BAD" property="bad" />
<result column="WRITER_ID" property="writerId" />
<result column="WRITER_NAME" property="writerName" />
<result column="WRITER_DISPLAY_ID" property="writerDisplayId" />
<result column="WRITER_PROFILE_IMG_URL" property="writerProfileImgUrl" />
<result column="PARENT_WRITER_ID" property="parentWriterId" />
<result column="PARENT_WRITER_NAME" property="parentWriterName" />
<result column="PARENT_WRITER_DISPLAY_ID" property="parentWriterDisplayId" />
<result column="GROUP_ID" property="groupId" />
<result column="PARENT_SEQ" property="parentSeq" />
<result column="STATUS" property="status" />
<result column="PASSWORD" property="password" />
</resultMap>
<select id="getNextSeq" parameterType="CommentVo" resultType="String">
SELECT
CASE
WHEN MAX(SEQ) IS NULL THEN 0
ELSE MAX(SEQ) + 1
END as SEQ
FROM
IMB_COMMENT
WHERE BOARD_ID = #{boardId} AND ARTICLE_SEQ = #{articleSeq}
</select>
<select id="getCommentListCount" parameterType="CommentVo" resultType="String">
SELECT
COUNT(IMBOARD_ID) AS COUNT
FROM
IMB_COMMENT
WHERE
BOARD_ID = #{boardId}
AND ARTICLE_SEQ = #{articleSeq}
<if test="#{content}">
AND CONTENT LIKE CONCAT('%',#{content},'%')
</if>
<if test="#{writerId}">
AND A.WRITER_ID = #{writerId}
</if>
<if test="#{likeWriterId}">
AND A.WRITER_ID LIKE CONCAT('%',#{likeWriterId},'%')
</if>
<if test="#{writerName}">
AND A.WRITER_NAME = #{writerName}
</if>
<if test="#{likeWriterName}">
AND A.WRITER_NAME LIKE CONCAT('%',#{likeWriterName},'%')
</if>
<if test="#{writerDisplayId}">
AND B.DISPLAY_ID = #{writerDisplayId}
</if>
<if test="#{likeWriterDisplayId}">
AND B.DISPLAY_ID LIKE CONCAT('%',#{likeWriterDisplayId},'%')
</if>
ORDER BY
GROUP_ID <choose><when test="#{orderByGroupId}">${orderByGroupId}</when><otherwise>ASC</otherwise></choose>
,SEQ <choose><when test="#{orderBySeq}">${orderBySeq}</when><otherwise>ASC</otherwise></choose>
<if test="#{orderByRegisterDate}">, REGISTER_DATE ${orderByRegisterDate}</if>
<if test="startIndex">
<if test="endIndex">
LIMIT #{startIndex}, #{endIndex}
</if>
</if>
</select>
<select id="getCommentList" parameterType="CommentVo" resultMap="commentResult">
SELECT
A.BOARD_ID,
A.ARTICLE_SEQ,
A.SEQ,
A.CONTENT,
<choose>
<when test="!#{registerDateType} or #{registerDateType} == 'short'">
(
CASE
WHEN DATE_FORMAT(now(), '%Y-%m-%d') = DATE_FORMAT(A.REGISTER_DATE, '%Y-%m-%d') THEN DATE_FORMAT(A.REGISTER_DATE, '%H:%i:%s')
ELSE DATE_FORMAT(A.REGISTER_DATE, '%Y-%m-%d')
END
) AS REGISTER_DATE,
</when>
<when test="#{registerDateType} == 'long'">
DATE_FORMAT(A.REGISTER_DATE, '%Y-%m-%d %H:%i:%s') AS REGISTER_DATE,
</when>
</choose>
A.GOOD,
A.BAD,
A.WRITER_ID,
CASE
WHEN B.NAME IS NULL THEN A.WRITER_NAME
ELSE B.NAME
END AS WRITER_NAME,
B.DISPLAY_ID AS WRITER_DISPLAY_ID,
A.PARENT_WRITER_ID,
C.ID AS PARENT_WRITER_ID,
CASE
WHEN C.NAME IS NULL THEN A.PARENT_WRITER_NAME
ELSE C.NAME
END AS PARENT_WRITER_NAME,
C.DISPLAY_ID AS PARENT_WRITER_DISPLAY_ID,
B.PROFILE_IMG_URL AS WRITER_PROFILE_IMG_URL,
A.PARENT_SEQ,
A.GROUP_ID,
A.STATUS,
'' AS PASSWORD
FROM
IMB_COMMENT AS A LEFT OUTER JOIN IMB_USER B ON A.WRITER_ID = B.ID
LEFT OUTER JOIN IMB_USER C ON A.PARENT_WRITER_ID = C.ID
WHERE
A.BOARD_ID = #{boardId}
AND A.ARTICLE_SEQ = #{articleSeq}
<if test="#{content}">
AND CONTENT LIKE CONCAT('%',#{content},'%')
</if>
<if test="#{writerId}">
AND A.WRITER_ID = #{writerId}
</if>
<if test="#{likeWriterId}">
AND A.WRITER_ID LIKE CONCAT('%',#{likeWriterId},'%')
</if>
<if test="#{writerName}">
AND A.WRITER_NAME = #{writerName}
</if>
<if test="#{likeWriterName}">
AND A.WRITER_NAME LIKE CONCAT('%',#{likeWriterName},'%')
</if>
<if test="#{writerDisplayId}">
AND B.DISPLAY_ID = #{writerDisplayId}
</if>
<if test="#{likeWriterDisplayId}">
AND B.DISPLAY_ID LIKE CONCAT('%',#{likeWriterDisplayId},'%')
</if>
ORDER BY
GROUP_ID <choose><when test="#{orderByGroupId}">${orderByGroupId}</when><otherwise>ASC</otherwise></choose>
,SEQ <choose><when test="#{orderBySeq}">${orderBySeq}</when><otherwise>ASC</otherwise></choose>
<if test="#{orderByRegisterDate}">, REGISTER_DATE ${orderByRegisterDate}</if>
<if test="#{startIndex} and #{endIndex}">
LIMIT #{startIndex}, #{endIndex}
</if>
</select>
<select id="getComment" parameterType="CommentVo" resultMap="commentResult">
SELECT
A.BOARD_ID,
A.ARTICLE_SEQ,
A.SEQ,
A.CONTENT,
<choose>
<when test="!#{registerDateType} or #{registerDateType} == 'short'">
(
CASE
WHEN DATE_FORMAT(now(), '%Y-%m-%d') = DATE_FORMAT(A.REGISTER_DATE, '%Y-%m-%d') THEN DATE_FORMAT(A.REGISTER_DATE, '%H:%i:%s')
ELSE DATE_FORMAT(A.REGISTER_DATE, '%Y-%m-%d')
END
) AS REGISTER_DATE,
</when>
<when test="#{registerDateType} == 'long'">
DATE_FORMAT(A.REGISTER_DATE, '%Y-%m-%d %H:%i:%s') AS REGISTER_DATE,
</when>
</choose>
A.GOOD,
A.BAD,
A.WRITER_ID,
CASE
WHEN B.NAME IS NULL THEN A.WRITER_NAME
ELSE B.NAME
END AS WRITER_NAME,
B.DISPLAY_ID AS WRITER_DISPLAY_ID,
A.PARENT_WRITER_ID,
C.ID AS PARENT_WRITER_ID,
CASE
WHEN C.NAME IS NULL THEN A.PARENT_WRITER_NAME
ELSE C.NAME
END AS PARENT_WRITER_NAME,
C.DISPLAY_ID AS PARENT_WRITER_DISPLAY_ID,
B.PROFILE_IMG_URL AS WRITER_PROFILE_IMG_URL,
A.PARENT_SEQ,
A.GROUP_ID,
A.STATUS,
A.PASSWORD
FROM
IMB_COMMENT AS A LEFT OUTER JOIN IMB_USER B ON A.WRITER_ID = B.ID
LEFT OUTER JOIN IMB_USER C ON A.PARENT_WRITER_ID = C.ID
WHERE
A.BOARD_ID = #{boardId}
AND A.ARTICLE_SEQ = #{articleSeq}
AND A.SEQ = #{seq}
ORDER BY
A.GROUP_ID, A.SEQ
</select>
<insert id="insertComment" parameterType="CommentVo">
INSERT INTO IMB_COMMENT
(BOARD_ID, ARTICLE_SEQ, SEQ, CONTENT, WRITER_ID, WRITER_NAME, GROUP_ID, PARENT_SEQ, PARENT_WRITER_ID, PARENT_WRITER_NAME, PASSWORD)
VALUES
(
#{boardId},
#{articleSeq},
#{seq},
#{content},
#{writerId},
#{writerName},
<choose>
<when test="#{groupId}">
#{groupId}
</when>
<otherwise>
#{seq}
</otherwise>
</choose>,
#{parentSeq},
#{parentWriterId},
#{parentWriterName},
#{password}
)
</insert>
<update id="updateComment" parameterType="CommentVo">
UPDATE IMB_COMMENT SET
CONTENT = #{content},
REGISTER_DATE = CURRENT_TIMESTAMP
WHERE
BOARD_ID = #{boardId}
AND ARTICLE_SEQ = #{articleSeq}
AND SEQ = #{seq}
</update>
<update id="updateGood" parameterType="CommentVo">
UPDATE IMB_COMMENT SET
GOOD = GOOD + 1
WHERE
BOARD_ID = #{boardId}
AND ARTICLE_SEQ = #{articleSeq}
AND SEQ = #{seq}
</update>
<update id="updateBad" parameterType="CommentVo">
UPDATE IMB_COMMENT SET
BAD = BAD + 1
WHERE
BOARD_ID = #{boardId}
AND ARTICLE_SEQ = #{articleSeq}
AND SEQ = #{seq}
</update>
<update id="updateCommentStatus" parameterType="CommentVo">
UPDATE IMB_COMMENT SET
STATUS = #{status}
WHERE
BOARD_ID = #{boardId}
AND ARTICLE_SEQ = #{articleSeq}
AND SEQ = #{seq}
</update>
<delete id="deleteComment" parameterType="CommentVo">
DELETE FROM
IMB_COMMENT
WHERE
BOARD_ID = #{boardId}
AND ARTICLE_SEQ = #{articleSeq}
AND SEQ = #{seq}
</delete>
<delete id="deleteCommentByArticle" parameterType="CommentVo">
DELETE FROM
IMB_COMMENT
WHERE
BOARD_ID = #{boardId}
AND ARTICLE_SEQ = #{articleSeq}
</delete>
</mapper>