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>  

沒有判斷,直接加載
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章