티스토리 뷰
예시
SQL에서도 조건문을 사용해야할때가 필요하다...!
<update id="insertTest" parameterType="TestVO">
INSERT INTO
gms_minwon_tb
(
cvlcpt_unq_no
,cvlcpt_cn
,actn_ymd
,cvlcpt_typ
)
VALUES
(
#{cvlcpt_unq_no}
,#{cvlcpt_cn, jdbcType=VARCHAR}
,TO_DATE(#{actn_ymd, jdbcType=VARCHAR}, 'YYYY-MM-DD')
,#{cvlcpt_typ, jdbcType=VARCHAR}
)
</update>
위의 간단한 예제를 예로들면
actn_ymd에 null값이 들어갔을때 (컬럼에 20220914과 같은 날짜 데이터가 입력이 되지 않았을때)
데이터가 00010101bc로 db에 입력되는 현상이 일어났다.
이런현상이 일어나는 이유가
,TO_DATE(#{actn_ymd, jdbcType=VARCHAR}, 'YYYY-MM-DD') 가
null 값을 날짜로 변형시키게 되면서 나타나게 된 것이다.
해결방법
1. 데이터가 null이면 null값을 그대로(변형없이 입력)
2. null이 아니면 날짜를 그대로 insert
<update id="insertTest" parameterType="TestVO">
INSERT INTO
gms_minwon_tb
(
cvlcpt_unq_no
,cvlcpt_cn
<if test="actn_ymd != null and !actn_ymd.equals('')">
,actn_ymd
</if>
,cvlcpt_typ
)
VALUES
(
#{cvlcpt_unq_no}
,#{cvlcpt_cn, jdbcType=VARCHAR}
<if test="actn_ymd != null and !actn_ymd.equals('')">
,TO_DATE(#{actn_ymd, jdbcType=VARCHAR}, 'YYYY-MM-DD')
</if>
,#{cvlcpt_typ, jdbcType=VARCHAR}
)
</update>
조건문을 통해서 해결했다
<if test="actn_ymd != null and !actn_ymd.equals('')">
actn_ymd가 null이 아니면 TO_DATE(#{actn_ymd, jdbcType=VARCHAR}, 'YYYY-MM-DD') 를 실행!
아주 간단하다.
하지만 이것도 헤맸는데, 그 이유는 values에만 조건문을 걸어주면 된다고 생각했기 때문이다.
insert into에도 if 조건문을 걸어줘야하는 것을 몰랐다 ㅜㅜ
insert into랑 value 둘다 if를 해주는 이유는
T or F 의 조건에서, 조건에 해당하지 않으면 value 값이 비어버리기 때문에 insert에 들어갈 값이 밀려서 에러가 나기 때문이다.
'Spring' 카테고리의 다른 글
취약점 점검 오류 수정 | Sparrow (0) | 2023.01.10 |
---|---|
spring 데이터베이스 연결 (다중DB, 전자정부프레임워크, Postgresql, MariaDB) (0) | 2022.09.20 |
이클립스 target파일 제외하기 (0) | 2022.04.21 |
mybatis에서 selectKey 사용해보기 (0) | 2022.04.04 |
AJAX 통신 사용해보기 (0) | 2022.04.04 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- setForceFormulaRecalculation
- mybatisif
- 리눅스
- createRow
- apachepoi
- 공간데이터병합
- 엑셀POI
- jdbcType
- 인터넷안되는환경에서설치
- 리눅스폐쇄망
- OpenLayers
- getRow
- Postgis
- Centos7에서 Postgresql12 설치
- 폐쇄망에서패키지설치
- 부하측정
- yumdownloader
- shp2pgsql
- 폐쇄망에서rpm설치
- Geoserver
- yumrepository
- svn프로젝트불러오기
- CreateCell
- getCell
- postgis 설치
- SVN
- Some resources were not updated.
- 공간데이터
- su postgres 안됨
- Postgresql12
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함