평범한 연구소

[myBatis] insert, update 시 NULL 처리 (SQLException: 부적합한 열 유형: 1111) 본문

DB|SQL

[myBatis] insert, update 시 NULL 처리 (SQLException: 부적합한 열 유형: 1111)

soyeonisgood 2022. 11. 17. 19:38

테이블 컬럼의 제약조건이 NULL 허용이어도, myBatis에서는 NULL값을 insert, update 할 수 없다. (SQLException: 부적합한 열 유형: 1111).

해결방법은 Mapper.xml에서 NULL값이 들어갈 컬럼에 jdbcType을 설정해주면 된다.

 

주요 jdbcType

  • BIT
  • FLOAT
  • CHAR
  • TIMESTAMP
  • VARCHAR
  • BINARY
  • DOUBLE
  • CLOB
  • INTEGER
  • DATE
  • BOOLEAN
  • TIME
  • NULL

DTO에서 선언한 변수가 Long형이라면, jdbcType은 INTEGER 사용하면 된다.

	<insert id="insertMember2" parameterType="com.sp.app.member.Member">
		INSERT INTO member2(userId, birth, email, tel, zip, addr1, addr2)
		VALUES (#{userId}, #{birth}, #{email}, #{tel}, 
			#{zip, jdbcType=VARCHAR}, #{addr1, jdbcType=VARCHAR}, 
			#{addr2, jdbcType=VARCHAR})
    </insert>
    
  	<update id="updateMember2" parameterType="com.sp.app.member.Member">
		UPDATE member2 SET email=#{email, jdbcType=VARCHAR}, 
			tel=#{tel, jdbcType=VARCHAR}, birth=#{birth, jdbcType=VARCHAR},
			zip=#{zip, jdbcType=VARCHAR},
			addr1=#{addr1, jdbcType=VARCHAR}, addr2=#{addr2, jdbcType=VARCHAR}
		WHERE userId=#{userId}
    </update>