myBatis insert문 사용시 동적 sql selectKey 사용하기

myBatis insert문 사용시 동적 sql selectKey 사용하기

insert 시 조건에 따라 다른 값을 넣고자 한다면 selectKey를 이용해서 전달된 자바빈 또는 map에 원하는 값을 
지정할 수 있다.

자바빈의 프로퍼티 또는 map의 key에 값을 저장하고자 한다면 insert문을 실행하기 전에 selectKey 태그를
명시해야 하며 keyProperty에 자바빈의 프로퍼티 또는 map의 key 값을 지정해 준다.

<insert id="insert" parameterType="자바빈 또는 map">
  <selectKey keyProperty="id" resultType="int" order="BEFORE">
      <if test="num == ''">
         select board_seq.nextval from dual
      </if>
       <if test="num != ''">
         select board_seq.currval from dual
      </if>
  </selectKey>
  insert into board values (#{id},#{name})
</insert>

iBatis에서 null 데이터 select 처리 JSP/Servlet

iBatis에서 null 데이터 select 처리

<resultMap id="BoardResult" class="Board">
<result property="num" column="num">
        <result property="title" column="title"> 
        <result property="name" column="name">
        <result property="email" column="email" nullValue="noemail"<- property의 타입이 String인 경우
        <result property="level" column="level" nullValue="0">  <- property의 타입이 int인 경우
</resultMap>

숫자 데이터가 DB에 null로 들어가 있을 경우 위의 예에서 보는 것과 같이 nullValue="0"으로 처리해야한다. iBatis는 null 데이터를 int 타입의 변수에서 전달하고자 한다면 null 데이터를  숫자로 변환 시킬 수 없기 때문에 null 데이터를 0으로 바꿔주면 오류가 발생하지 않는다.

iBatis에서 null parameter 오류 발생시 해결 방법 JSP/Servlet

iBatis를 이용해 데이터를 삽입할 때 null parameter에 대해 아래와 같은 에러 메시지가 만들어지고 데이터베이스에 저장되지 않는 현상이 일어날 때 처리 방법

 

Cause: org.apache.ibatis.type.TypeException: Error setting null parameter.  Most JDBC drivers require that the JdbcType must be specified for all nullable parameters. Cause: java.sql.SQLException: 부적합한 열 유형

 

<insert id="insertBoard" parameterClass="Board">
    INSERT INTO board (
       seq, 
       writer, 
       title, 
       content, 
       passwd, 
       regdate,
       filename )
    VALUES (
     board_seq.nextval, 
     #writer#, 
     #title#, 
     #content#, 
     #pwd#, 
     sysdate,
     #filename:VARCHAR#) <- null을 허용하려면 :VARCHAR 추가
  </insert>


JSP Project를 war 파일로 export/import하기 JSP/Servlet

JSP Project를 war 파일로 export/import하는 방법을 알려주는 동영상입니다.

동영상 보기


MyBatis 사용시 null parameter 에러 발생시 처리 JSP/Servlet

MyBatis를 이용해 데이터를 삽입할 때 null parameter에 대해 아래와 같은 에러 메시지가 만들어지고 데이터베이스에 저장되지 않는 현상이 일어날 때 처리 방법

 

Cause: org.apache.ibatis.type.TypeException: Error setting null parameter.  Most JDBC drivers require that the JdbcType must be specified for all nullable parameters. Cause: java.sql.SQLException: 부적합한 열 유형

 

<insert id="insertBoard" parameterType="Board">
    INSERT INTO board (
       seq, 
       writer, 
       title, 
       content, 
       passwd, 
       regdate,
       filename )
    VALUES (
     board_seq.nextval, 
     #{writer}, 
     #{title}, 
     #{content}, 
     #{pwd}, 
     sysdate,
     #{filename,jdbcType=VARCHAR}) <- null을 허용하려면 jdbcType=VARCHAR 추가

                                                      ( date 타입일 경우 jdbcType=DATE

                                                        number 타입일 경우는 jdbcType=INTEGER 설정)

  </insert>


* 자바빈으로 데이터 전달시 데이터를 미입력하면 number 타입의 경우 null로 처리되지 않고 0이 입력되기

때문에  jdbcType=INTEGER를 명시하지 않아도 오류가 발생하지 않는다. 만약 데이터를 Map의 형태로 

전달할 경우는 데이터 미입력시 0이 입력되지 않고 null로 처리되기 때문에  jdbcType=INTEGER를 입력하지

않으면 오류 발생



1 2 3 4 5 6 7 8 9 10 다음

애드센스(468*60)



애드센스(160*600)