반응형
Mybatis insert, update null 처리, 부적합한 열 유형 처리방법
Mybatis를 활용해 insert, update 시 변수의 값이 없을 시
부적합한 열 유형 (해당 변수=null) 에러가 발생합니다.
이를 처리하기 위해서는
if 태그를 활용하는 방법과
MERGE INTO C_TS_WETHER_INFO
USING DUAL
ON (FRCST_DT = #{baseDate} AND WETHER_ID = #{wetherId})
WHEN MATCHED THEN
UPDATE SET
<if test="t1h != null and t1h != ''">
TMPRT = #{t1h}
</if>
.
.
.
jdbc type을 설정해 주는 방법이 있습니다.
varchar형은 jdbcType=VARCHAR
number형은 jdbcType=INTEGER
MERGE INTO C_TS_WETHER_INFO
USING DUAL
ON (FRCST_DT = #{baseDate} AND WETHER_ID = #{wetherId})
WHEN MATCHED THEN
UPDATE SET
TMPRT = #{t1h, jdbcType=INTEGER}
, ONE_TIME_PRCPT = #{rn1, jdbcType=INTEGER}
, SKY_STTUS = #{sky, jdbcType=INTEGER}
, ESWS_WIND_IRDNT = #{uuu, jdbcType=INTEGER}
, STNT_WIND_IRDNT = #{vvv, jdbcType=INTEGER}
, HD = #{reh, jdbcType=INTEGER}
, PRCPT_STLE = #{pty, jdbcType=INTEGER}
, THNDBLT = #{lgt, jdbcType=INTEGER}
, WD = #{vec, jdbcType=INTEGER}
, WS = #{wsd, jdbcType=INTEGER}
WHEN NOT MATCHED THEN
INSERT (
FRCST_DT
, WETHER_ID
, TMPRT
, ONE_TIME_PRCPT
, SKY_STTUS
, ESWS_WIND_IRDNT
, STNT_WIND_IRDNT
, HD
, PRCPT_STLE
, THNDBLT
, WD
, WS
) VALUES (
#{baseDate}
, #{wetherId}
, #{t1h, jdbcType=INTEGER}
, #{rn1, jdbcType=INTEGER}
, #{sky, jdbcType=INTEGER}
, #{uuu, jdbcType=INTEGER}
, #{vvv, jdbcType=INTEGER}
, #{reh, jdbcType=INTEGER}
, #{pty, jdbcType=INTEGER}
, #{lgt, jdbcType=INTEGER}
, #{vec, jdbcType=INTEGER}
, #{wsd, jdbcType=INTEGER}
)
위의 방법은 Mybatis 옵션으로 설정이 가능하다.
xml의 경우
<settings>
<setting name="cacheEnabled" value="false" />
<setting name="jdbcTypeForNull" value="NULL" />
</settings>
Java 파일의 경우
org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
configuration.setCacheEnabled(false);
configuration.setJdbcTypeForNull(null);
반응형
'Programing > JAVA' 카테고리의 다른 글
Java Spring boot WebSocket Client 구현 Jetty websocket-client 활용 (0) | 2018.11.01 |
---|---|
JAVA json 객체를 VO, List<VO> 로 파싱하는 방법 json to Java Class, Json to object (2) | 2018.10.30 |
Spring Framework DBCP HikariCP 적용방법 (0) | 2018.09.05 |
Java JCE를 이용하기 위한 개발 환경 설정, Provider 추가 (0) | 2018.08.30 |
Java Method Overriding, Overroading 자바 메서드 오버로딩과 오버라이딩 (0) | 2018.07.26 |
댓글