localhost-back/src/main/resources/mapper/worddictyMapper.xml

346 lines
11 KiB
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="io.company.localhost.mapper.worddictyMapper">
<sql id="searchConditions">
<!-- 검색어 조건 -->
<if test="searchKeyword != null and searchKeyword != ''">
and (
REGEXP_REPLACE(w.WRDDICTTL, '\\[\\{.*?"insert":"', '') LIKE CONCAT('%', #{searchKeyword}, '%')
OR REGEXP_REPLACE(w.WRDDICCON, '\\[\\{.*?"insert":"', '') LIKE CONCAT('%', #{searchKeyword}, '%')
)
</if>
<!-- 색인표 조건 -->
<if test="indexKeyword != null and indexKeyword != ''">
<choose>
<!-- 한글 ㄱ ~ ㅎ에 대한 검색 -->
<when test='indexKeyword == "ㄱ"'>
and w.WRDDICTTL BETWEEN '가' AND '깋'
</when>
<when test='indexKeyword == "ㄴ"'>
and w.WRDDICTTL BETWEEN '나' AND '닣'
</when>
<when test='indexKeyword == "ㄷ"'>
and w.WRDDICTTL BETWEEN '다' AND '딷'
</when>
<when test='indexKeyword == "ㄹ"'>
and w.WRDDICTTL BETWEEN '라' AND '릿'
</when>
<when test='indexKeyword == "ㅁ"'>
and w.WRDDICTTL BETWEEN '마' AND '밓'
</when>
<when test='indexKeyword == "ㅂ"'>
and w.WRDDICTTL BETWEEN '바' AND '빟'
</when>
<when test='indexKeyword == "ㅅ"'>
and w.WRDDICTTL BETWEEN '사' AND '싷'
</when>
<when test='indexKeyword == "ㅇ"'>
and w.WRDDICTTL BETWEEN '아' AND '잏'
</when>
<when test='indexKeyword == "ㅈ"'>
and w.WRDDICTTL BETWEEN '자' AND '짛'
</when>
<when test='indexKeyword == "ㅊ"'>
and w.WRDDICTTL BETWEEN '차' AND '칳'
</when>
<when test='indexKeyword == "ㅋ"'>
and w.WRDDICTTL BETWEEN '카' AND '킿'
</when>
<when test='indexKeyword == "ㅌ"'>
and w.WRDDICTTL BETWEEN '타' AND '틷'
</when>
<when test='indexKeyword == "ㅍ"'>
and w.WRDDICTTL BETWEEN '파' AND '핗'
</when>
<when test='indexKeyword == "ㅎ"'>
and w.WRDDICTTL BETWEEN '하' AND '힣'
</when>
<!-- 알파벳 a ~ z에 대한 검색 -->
<when test='indexKeyword == "a"'>
and w.WRDDICTTL like "a%"
</when>
<when test='indexKeyword == "b"'>
and w.WRDDICTTL like "b%"
</when>
<when test='indexKeyword == "c"'>
and w.WRDDICTTL like "c%"
</when>
<when test='indexKeyword == "d"'>
and w.WRDDICTTL like "d%"
</when>
<when test='indexKeyword == "e"'>
and w.WRDDICTTL like "e%"
</when>
<when test='indexKeyword == "f"'>
and w.WRDDICTTL like "f%"
</when>
<when test='indexKeyword == "g"'>
and w.WRDDICTTL like "g%"
</when>
<when test='indexKeyword == "h"'>
and w.WRDDICTTL like "h%"
</when>
<when test='indexKeyword == "i"'>
and w.WRDDICTTL like "i%"
</when>
<when test='indexKeyword == "j"'>
and w.WRDDICTTL like "j%"
</when>
<when test='indexKeyword == "k"'>
and w.WRDDICTTL like "k%"
</when>
<when test='indexKeyword == "l"'>
and w.WRDDICTTL like "l%"
</when>
<when test='indexKeyword == "m"'>
and w.WRDDICTTL like "m%"
</when>
<when test='indexKeyword == "n"'>
and w.WRDDICTTL like "n%"
</when>
<when test='indexKeyword == "o"'>
and w.WRDDICTTL like "o%"
</when>
<when test='indexKeyword == "p"'>
and w.WRDDICTTL like "p%"
</when>
<when test='indexKeyword == "q"'>
and w.WRDDICTTL like "q%"
</when>
<when test='indexKeyword == "r"'>
and w.WRDDICTTL like "r%"
</when>
<when test='indexKeyword == "s"'>
and w.WRDDICTTL like "s%"
</when>
<when test='indexKeyword == "t"'>
and w.WRDDICTTL like "t%"
</when>
<when test='indexKeyword == "u"'>
and w.WRDDICTTL like "u%"
</when>
<when test='indexKeyword == "v"'>
and w.WRDDICTTL like "v%"
</when>
<when test='indexKeyword == "w"'>
and w.WRDDICTTL like "w%"
</when>
<when test='indexKeyword == "x"'>
and w.WRDDICTTL like "x%"
</when>
<when test='indexKeyword == "y"'>
and w.WRDDICTTL like "y%"
</when>
<when test='indexKeyword == "z"'>
and w.WRDDICTTL like "z%"
</when>
</choose>
</if>
<!-- 카테고리 조건 -->
<if test="category != null and category != '' and category != 'all'">
and w.WRDDICCAT = #{category}
</if>
</sql>
<select id="selectWordList" parameterType="map" resultType="io.company.localhost.common.dto.MapDto">
select
w.WRDDICSEQ,
w.WRDDICCAT,
w.WRDDICTTL,
w.WRDDICCON,
c.CMNCODNAM category,
m1.MEMBERPRF REGPRF,
m1.MEMBERNAM REGNAME,
cr.CMNCODNAM REGCOLOR,
w.WRDDICRDT REGRDT,
m2.MEMBERPRF UPDPRF,
m2.MEMBERNAM UPDNAME,
cu.CMNCODNAM UPDCOLOR,
w.WRDDICUDT UPDUDT
from
worddicty w
left join
commoncod c
on
w.WRDDICCAT = c.CMNCODVAL
left join
netmember m1
on
w.WRDDICREG = m1.MEMBERSEQ
left join
commoncod cr
on
m1.MEMBERCOL = cr.CMNCODVAL -- 등록자 색상
left join
netmember m2
on
w.WRDDICUPD = m2.MEMBERSEQ
left join
commoncod cu
on
m2.MEMBERCOL = cu.CMNCODVAL -- 수정자 색상
where
1=1
and w.WRDDICEDT IS NULL
<include refid="searchConditions"/>
order by w.WRDDICRDT desc
</select>
<select id="getTotal" parameterType="map" >
select count(*) from worddicty w
where 1=1
<include refid="searchConditions"/>
</select>
<insert id="insertWord" parameterType="map">
insert into worddicty
(
WRDDICCAT
,WRDDICTTL
,WRDDICCON
,WRDDICREG
,WRDDICRDT
,WRDDICUPD
,WRDDICUDT
<if test="WRDDICRIK != null and WRDDICRIK != ''">
,WRDDICRIK
</if>
)
values
(
#{WRDDICCAT}
,#{WRDDICTTL}
,#{WRDDICCON}
,#{userId}
,now()
,#{userId}
,now()
<if test="WRDDICRIK != null and WRDDICRIK != ''">
,WRDDICRIK
</if>
)
</insert>
<update id="updateWord" parameterType="map">
update
worddicty
set
WRDDICCAT = #{WRDDICCAT}
,WRDDICTTL = #{WRDDICTTL}
,WRDDICCON = #{WRDDICCON}
,WRDDICUPD = #{userId}
,WRDDICUDT = now()
<if test="WRDDICRIK != null and WRDDICRIK != ''">
,WRDDICRIK = #{WRDDICRIK}
</if>
where
WRDDICSEQ = #{WRDDICSEQ}
</update>
<select id="selectWordDetail" parameterType="map" resultType="io.company.localhost.common.dto.MapDto">
select *
from
worddicty
where
WRDDICSEQ = #{WRDDICSEQ}
</select>
<update id="updateword" parameterType="map">
UPDATE
worddicty
SET
WRDDICEDT = now()
WHERE WRDDICSEQ IN
<foreach item="id" collection="idList" open="(" separator="," close=")">
#{id}
</foreach>
</update>
<select id="selectIndexCategory">
SELECT
CHARACTER_,
COUNT(*) AS COUNT
FROM (
SELECT 'ㄱ' AS CHARACTER_, WRDDICTTL FROM worddicty WHERE WRDDICTTL BETWEEN '가' AND '깋'
UNION ALL
SELECT 'ㄴ' AS CHARACTER_, WRDDICTTL FROM worddicty WHERE WRDDICTTL BETWEEN '나' AND '닣'
UNION ALL
SELECT 'ㄷ' AS CHARACTER_, WRDDICTTL FROM worddicty WHERE WRDDICTTL BETWEEN '다' AND '딷'
UNION ALL
SELECT 'ㄹ' AS CHARACTER_, WRDDICTTL FROM worddicty WHERE WRDDICTTL BETWEEN '라' AND '릿'
UNION ALL
SELECT 'ㅁ' AS CHARACTER_, WRDDICTTL FROM worddicty WHERE WRDDICTTL BETWEEN '마' AND '밓'
UNION ALL
SELECT 'ㅂ' AS CHARACTER_, WRDDICTTL FROM worddicty WHERE WRDDICTTL BETWEEN '바' AND '빟'
UNION ALL
SELECT 'ㅅ' AS CHARACTER_, WRDDICTTL FROM worddicty WHERE WRDDICTTL BETWEEN '사' AND '싷'
UNION ALL
SELECT 'ㅇ' AS CHARACTER_, WRDDICTTL FROM worddicty WHERE WRDDICTTL BETWEEN '아' AND '잏'
UNION ALL
SELECT 'ㅈ' AS CHARACTER_, WRDDICTTL FROM worddicty WHERE WRDDICTTL BETWEEN '자' AND '짛'
UNION ALL
SELECT 'ㅊ' AS CHARACTER_, WRDDICTTL FROM worddicty WHERE WRDDICTTL BETWEEN '차' AND '칳'
UNION ALL
SELECT 'ㅋ' AS CHARACTER_, WRDDICTTL FROM worddicty WHERE WRDDICTTL BETWEEN '카' AND '킿'
UNION ALL
SELECT 'ㅌ' AS CHARACTER_, WRDDICTTL FROM worddicty WHERE WRDDICTTL BETWEEN '타' AND '틷'
UNION ALL
SELECT 'ㅍ' AS CHARACTER_, WRDDICTTL FROM worddicty WHERE WRDDICTTL BETWEEN '파' AND '핗'
UNION ALL
SELECT 'ㅎ' AS CHARACTER_, WRDDICTTL FROM worddicty WHERE WRDDICTTL BETWEEN '하' AND '힣'
UNION ALL
SELECT 'a' AS CHARACTER_, WRDDICTTL FROM worddicty WHERE WRDDICTTL LIKE 'a%'
UNION ALL
SELECT 'b' AS CHARACTER_, WRDDICTTL FROM worddicty WHERE WRDDICTTL LIKE 'b%'
UNION ALL
SELECT 'c' AS CHARACTER_, WRDDICTTL FROM worddicty WHERE WRDDICTTL LIKE 'c%'
UNION ALL
SELECT 'd' AS CHARACTER_, WRDDICTTL FROM worddicty WHERE WRDDICTTL LIKE 'd%'
UNION ALL
SELECT 'e' AS CHARACTER_, WRDDICTTL FROM worddicty WHERE WRDDICTTL LIKE 'e%'
UNION ALL
SELECT 'f' AS CHARACTER_, WRDDICTTL FROM worddicty WHERE WRDDICTTL LIKE 'f%'
UNION ALL
SELECT 'g' AS CHARACTER_, WRDDICTTL FROM worddicty WHERE WRDDICTTL LIKE 'g%'
UNION ALL
SELECT 'h' AS CHARACTER_, WRDDICTTL FROM worddicty WHERE WRDDICTTL LIKE 'h%'
UNION ALL
SELECT 'i' AS CHARACTER_, WRDDICTTL FROM worddicty WHERE WRDDICTTL LIKE 'i%'
UNION ALL
SELECT 'j' AS CHARACTER_, WRDDICTTL FROM worddicty WHERE WRDDICTTL LIKE 'j%'
UNION ALL
SELECT 'k' AS CHARACTER_, WRDDICTTL FROM worddicty WHERE WRDDICTTL LIKE 'k%'
UNION ALL
SELECT 'l' AS CHARACTER_, WRDDICTTL FROM worddicty WHERE WRDDICTTL LIKE 'l%'
UNION ALL
SELECT 'm' AS CHARACTER_, WRDDICTTL FROM worddicty WHERE WRDDICTTL LIKE 'm%'
UNION ALL
SELECT 'n' AS CHARACTER_, WRDDICTTL FROM worddicty WHERE WRDDICTTL LIKE 'n%'
UNION ALL
SELECT 'o' AS CHARACTER_, WRDDICTTL FROM worddicty WHERE WRDDICTTL LIKE 'o%'
UNION ALL
SELECT 'p' AS CHARACTER_, WRDDICTTL FROM worddicty WHERE WRDDICTTL LIKE 'p%'
UNION ALL
SELECT 'q' AS CHARACTER_, WRDDICTTL FROM worddicty WHERE WRDDICTTL LIKE 'q%'
UNION ALL
SELECT 'r' AS CHARACTER_, WRDDICTTL FROM worddicty WHERE WRDDICTTL LIKE 'r%'
UNION ALL
SELECT 's' AS CHARACTER_, WRDDICTTL FROM worddicty WHERE WRDDICTTL LIKE 's%'
UNION ALL
SELECT 't' AS CHARACTER_, WRDDICTTL FROM worddicty WHERE WRDDICTTL LIKE 't%'
UNION ALL
SELECT 'u' AS CHARACTER_, WRDDICTTL FROM worddicty WHERE WRDDICTTL LIKE 'u%'
UNION ALL
SELECT 'v' AS CHARACTER_, WRDDICTTL FROM worddicty WHERE WRDDICTTL LIKE 'v%'
UNION ALL
SELECT 'w' AS CHARACTER_, WRDDICTTL FROM worddicty WHERE WRDDICTTL LIKE 'w%'
UNION ALL
SELECT 'x' AS CHARACTER_, WRDDICTTL FROM worddicty WHERE WRDDICTTL LIKE 'x%'
UNION ALL
SELECT 'y' AS CHARACTER_, WRDDICTTL FROM worddicty WHERE WRDDICTTL LIKE 'y%'
UNION ALL
SELECT 'z' AS CHARACTER_, WRDDICTTL FROM worddicty WHERE WRDDICTTL LIKE 'z%'
) AS combined
GROUP BY CHARACTER_
ORDER BY
CASE
WHEN CHARACTER_ BETWEEN 'ㄱ' AND 'ㅎ' THEN 1
ELSE 2
END,
CHARACTER_
</select>
</mapper>