zoukankan      html  css  js  c++  java
  • oracle insert in ibatis3

    今天开始用ibatis3在Oracle中做一个user表的插入:

      <insert id="insertSelective" parameterType="cn.com.aabbcc.beans.InnerUser">
        insert into SQ_ADMIN
        <trim prefix="(" suffix=")" suffixOverrides=",">
          <if test="name != null">
            NAME,
          </if>
          <if test="password != null">
            PASSWORD,
          </if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            #{innerUserID,jdbcType=DECIMAL},
          <if test="name != null">
            #{name,jdbcType=VARCHAR},
          </if>
          <if test="password != null">
            #{password,jdbcType=VARCHAR},
          </if>
        </trim>
      </insert>

    报告:不能将NULL插入到ID中。噢!原来我没有写select SQ_ADMIN_SEQ.nextval from dual

    修改后就好了,注意红色部分,order="BEFORE"在3.0中要加上的,然后ID不要去用<if test="innerUserID != null">去判断,因为innerUserID永远是null(不知道是不是BUG):

      <insert id="insertSelective" parameterType="cn.com.aabbcc.beans.InnerUser">

        <selectKey keyProperty="innerUserID" resultType="Long" order="BEFORE">
          select SQ_ADMIN_SEQ.nextval from dual
        </selectKey>

        insert into SQ_ADMIN
        <trim prefix="(" suffix=")" suffixOverrides=",">

       ID,
          <if test="name != null">
            NAME,
          </if>
          <if test="password != null">
            PASSWORD,
          </if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            #{innerUserID,jdbcType=DECIMAL},
          <if test="name != null">
            #{name,jdbcType=VARCHAR},
          </if>
          <if test="password != null">
            #{password,jdbcType=VARCHAR},
          </if>
        </trim>
      </insert>

  • 相关阅读:
    Dynamics CRM9.0更新了Chrome后菜单按钮变形
    质量属性
    机器学习理解
    大道之简的理解
    架构之美理解
    1.13
    1.12
    1.11
    1.10
    Flex 替换输入的字符串
  • 原文地址:https://www.cnblogs.com/huqingyu/p/1742741.html
Copyright © 2011-2022 走看看