美文网首页
updateByPrimaryKey与updateByPrima

updateByPrimaryKey与updateByPrima

作者: wangxiaoda | 来源:发表于2017-06-05 15:30 被阅读297次

    在abator中可生成iBatis的代码。其中,Sql_map中带有的两个函数是:
    updateByPrimaryKeySelective
    updateByPrimaryKey
    前者只是更新新的model中不为空的字段。
    后者则会将为空的字段在数据库中置为NULL。

    Labor labor = new Labor();
    labor.setIdentitycard(identitycard);
    labor.setName(name);
    labor.setDepartmentid(Integer.parseInt("1"));
    labor.setEmployeenumber(Integer.parseInt("1006"));
    labor.setLeadernumberid(Integer.parseInt("1001"));
    
    result = laborAO.doSave(labor, "updateByIdentitycard");
    if (!result.isSuccess()) {
        return INPUT;
    } else {
        System.out.println("message : insert " + name + " . \n");
        return SUCCESS;
    }
    

    如果DAO中使用的是updateByPrimaryKeySelective,则按照不为空的labor值去更新。
    如果使用updateByPrimaryKey,这在labor中未定义的字段更新后就没有了。
    从SQL语句上分析,二者的不同:

    <update id="updateByPrimaryKeySelective" parameterClass="com.sk.maxdrive.dal.model.Labor" >
        <!--
          WARNING - @ibatorgenerated
          This element is automatically generated by Apache iBATIS Ibator, do not modify.
          This element was generated on Thu Sep 01 13:55:37 CST 2011.
        -->
        update labor
        <dynamic prepend="set" >
          <isNotNull prepend="," property="name" >
            NAME = #name:VARCHAR#
          </isNotNull>
          <isNotNull prepend="," property="tagid" >
            TAGID = #tagid:VARCHAR#
          </isNotNull>
          <isNotNull prepend="," property="departmentid" >
            DEPARTMENTID = #departmentid:INTEGER#
          </isNotNull>
          <isNotNull prepend="," property="duty" >
            DUTY = #duty:VARCHAR#
          </isNotNull>
          <isNotNull prepend="," property="employeenumber" >
            EMPLOYEENUMBER = #employeenumber:INTEGER#
          </isNotNull>
          <isNotNull prepend="," property="leadernumberid" >
            LEADERNUMBERID = #leadernumberid:INTEGER#
          </isNotNull>
          <isNotNull prepend="," property="home" >
            HOME = #home:VARCHAR#
          </isNotNull>
          <isNotNull prepend="," property="address" >
            ADDRESS = #address:VARCHAR#
          </isNotNull>
          <isNotNull prepend="," property="emergencynumber" >
            EMERGENCYNUMBER = #emergencynumber:VARCHAR#
          </isNotNull>
          <isNotNull prepend="," property="emergencycontact" >
            EMERGENCYCONTACT = #emergencycontact:VARCHAR#
          </isNotNull>
          <isNotNull prepend="," property="hoursetel" >
            HOURSETEL = #hoursetel:VARCHAR#
          </isNotNull>
          <isNotNull prepend="," property="postcode" >
            POSTCODE = #postcode:INTEGER#
          </isNotNull>
          <isNotNull prepend="," property="cellphone" >
            CELLPHONE = #cellphone:VARCHAR#
          </isNotNull>
          <isNotNull prepend="," property="email" >
            EMAIL = #email:VARCHAR#
          </isNotNull>
          <isNotNull prepend="," property="resume" >
            RESUME = #resume:VARCHAR#
          </isNotNull>
          <isNotNull prepend="," property="employeedate" >
            EMPLOYEEDATE = #employeedate:VARCHAR#
          </isNotNull>
          <isNotNull prepend="," property="headpic" >
            HEADPIC = #headpic:VARCHAR#
          </isNotNull>
          <isNotNull prepend="," property="bankaccount" >
            BANKACCOUNT = #bankaccount:VARCHAR#
          </isNotNull>
        </dynamic>
        where IDENTITYCARD = #identitycard:VARCHAR#
      </update>
    

    一系列的isNull判断

    <update id="updateByPrimaryKey" parameterClass="com.sk.maxdrive.dal.model.Labor" >
        <!--
          WARNING - @ibatorgenerated
          This element is automatically generated by Apache iBATIS Ibator, do not modify.
          This element was generated on Thu Sep 01 13:55:37 CST 2011.
        -->
        update labor
        set NAME = #name:VARCHAR#,
          TAGID = #tagid:VARCHAR#,
          DEPARTMENTID = #departmentid:INTEGER#,
          DUTY = #duty:VARCHAR#,
          EMPLOYEENUMBER = #employeenumber:INTEGER#,
          LEADERNUMBERID = #leadernumberid:INTEGER#,
          HOME = #home:VARCHAR#,
          ADDRESS = #address:VARCHAR#,
          EMERGENCYNUMBER = #emergencynumber:VARCHAR#,
          EMERGENCYCONTACT = #emergencycontact:VARCHAR#,
          HOURSETEL = #hoursetel:VARCHAR#,
          POSTCODE = #postcode:INTEGER#,
          CELLPHONE = #cellphone:VARCHAR#,
          EMAIL = #email:VARCHAR#,
          RESUME = #resume:VARCHAR#,
          EMPLOYEEDATE = #employeedate:VARCHAR#,
          HEADPIC = #headpic:VARCHAR#,
          BANKACCOUNT = #bankaccount:VARCHAR#
        where IDENTITYCARD = #identitycard:VARCHAR#
      </update>
    

    没有判断,直接加载

    相关文章

      网友评论

          本文标题:updateByPrimaryKey与updateByPrima

          本文链接:https://www.haomeiwen.com/subject/isgifxtx.html