updateByPrimaryKey与updateByPrimaryKeySelective

在abator中可生成iBatis的代码。其中,Sql_map中带有的两个函数是:

updateByPrimaryKeySelective

updateByPrimaryKey

前者只是更新新的model中不为空的字段。

后者则会将为空的字段在数据库中置为NULL。

例如:Action

[java]  view plain  copy
  1. Labor labor = new Labor();  
  2. labor.setIdentitycard(identitycard);  
  3. labor.setName(name);  
  4. labor.setDepartmentid(Integer.parseInt("1"));  
  5. labor.setEmployeenumber(Integer.parseInt("1006"));  
  6. labor.setLeadernumberid(Integer.parseInt("1001"));  
  7.   
  8. result = laborAO.doSave(labor, "updateByIdentitycard");  
  9. if (!result.isSuccess()) {  
  10.     return INPUT;  
  11. else {  
  12.     System.out.println("message : insert " + name + " . \n");  
  13.     return SUCCESS;  
  14. }  

如果DAO中使用的是updateByPrimaryKeySelective,则按照不为空的labor值去更新。

如果使用updateByPrimaryKey,这在labor中未定义的字段更新后就没有了。

从SQL语句上分析,二者的不同:

[html]  view plain  copy
  1. <update id="updateByPrimaryKeySelective" parameterClass="com.sk.maxdrive.dal.model.Labor" >  
  2.     <!--  
  3.       WARNING - @ibatorgenerated  
  4.       This element is automatically generated by Apache iBATIS Ibator, do not modify.  
  5.       This element was generated on Thu Sep 01 13:55:37 CST 2011.  
  6.     -->  
  7.     update labor  
  8.     <dynamic prepend="set" >  
  9.       <isNotNull prepend="," property="name" >  
  10.         NAME = #name:VARCHAR#  
  11.       </isNotNull>  
  12.       <isNotNull prepend="," property="tagid" >  
  13.         TAGID = #tagid:VARCHAR#  
  14.       </isNotNull>  
  15.       <isNotNull prepend="," property="departmentid" >  
  16.         DEPARTMENTID = #departmentid:INTEGER#  
  17.       </isNotNull>  
  18.       <isNotNull prepend="," property="duty" >  
  19.         DUTY = #duty:VARCHAR#  
  20.       </isNotNull>  
  21.       <isNotNull prepend="," property="employeenumber" >  
  22.         EMPLOYEENUMBER = #employeenumber:INTEGER#  
  23.       </isNotNull>  
  24.       <isNotNull prepend="," property="leadernumberid" >  
  25.         LEADERNUMBERID = #leadernumberid:INTEGER#  
  26.       </isNotNull>  
  27.       <isNotNull prepend="," property="home" >  
  28.         HOME = #home:VARCHAR#  
  29.       </isNotNull>  
  30.       <isNotNull prepend="," property="address" >  
  31.         ADDRESS = #address:VARCHAR#  
  32.       </isNotNull>  
  33.       <isNotNull prepend="," property="emergencynumber" >  
  34.         EMERGENCYNUMBER = #emergencynumber:VARCHAR#  
  35.       </isNotNull>  
  36.       <isNotNull prepend="," property="emergencycontact" >  
  37.         EMERGENCYCONTACT = #emergencycontact:VARCHAR#  
  38.       </isNotNull>  
  39.       <isNotNull prepend="," property="hoursetel" >  
  40.         HOURSETEL = #hoursetel:VARCHAR#  
  41.       </isNotNull>  
  42.       <isNotNull prepend="," property="postcode" >  
  43.         POSTCODE = #postcode:INTEGER#  
  44.       </isNotNull>  
  45.       <isNotNull prepend="," property="cellphone" >  
  46.         CELLPHONE = #cellphone:VARCHAR#  
  47.       </isNotNull>  
  48.       <isNotNull prepend="," property="email" >  
  49.         EMAIL = #email:VARCHAR#  
  50.       </isNotNull>  
  51.       <isNotNull prepend="," property="resume" >  
  52.         RESUME = #resume:VARCHAR#  
  53.       </isNotNull>  
  54.       <isNotNull prepend="," property="employeedate" >  
  55.         EMPLOYEEDATE = #employeedate:VARCHAR#  
  56.       </isNotNull>  
  57.       <isNotNull prepend="," property="headpic" >  
  58.         HEADPIC = #headpic:VARCHAR#  
  59.       </isNotNull>  
  60.       <isNotNull prepend="," property="bankaccount" >  
  61.         BANKACCOUNT = #bankaccount:VARCHAR#  
  62.       </isNotNull>  
  63.     </dynamic>  
  64.     where IDENTITYCARD = #identitycard:VARCHAR#  
  65.   </update>  

一系列的isNull判断

[html]  view plain  copy
  1. <update id="updateByPrimaryKey" parameterClass="com.sk.maxdrive.dal.model.Labor" >  
  2.     <!--  
  3.       WARNING - @ibatorgenerated  
  4.       This element is automatically generated by Apache iBATIS Ibator, do not modify.  
  5.       This element was generated on Thu Sep 01 13:55:37 CST 2011.  
  6.     -->  
  7.     update labor  
  8.     set NAME = #name:VARCHAR#,  
  9.       TAGID = #tagid:VARCHAR#,  
  10.       DEPARTMENTID = #departmentid:INTEGER#,  
  11.       DUTY = #duty:VARCHAR#,  
  12.       EMPLOYEENUMBER = #employeenumber:INTEGER#,  
  13.       LEADERNUMBERID = #leadernumberid:INTEGER#,  
  14.       HOME = #home:VARCHAR#,  
  15.       ADDRESS = #address:VARCHAR#,  
  16.       EMERGENCYNUMBER = #emergencynumber:VARCHAR#,  
  17.       EMERGENCYCONTACT = #emergencycontact:VARCHAR#,  
  18.       HOURSETEL = #hoursetel:VARCHAR#,  
  19.       POSTCODE = #postcode:INTEGER#,  
  20.       CELLPHONE = #cellphone:VARCHAR#,  
  21.       EMAIL = #email:VARCHAR#,  
  22.       RESUME = #resume:VARCHAR#,  
  23.       EMPLOYEEDATE = #employeedate:VARCHAR#,  
  24.       HEADPIC = #headpic:VARCHAR#,  
  25.       BANKACCOUNT = #bankaccount:VARCHAR#  
  26.     where IDENTITYCARD = #identitycard:VARCHAR#  
  27.   </update>  

没有判断,直接加载
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值