Mybatis中updateByPrimaryKeySelective和updateByPrimaryKey的用法區別

很酷不給撩*發表於2020-11-25

1. 用法區別

  1. updateByPrimaryKeySelective(Object obj)
    updateByPrimaryKeySelective 接收的引數為對應於資料庫的實體類物件,利用欄位的自動匹配進行更新表的操作,如果傳入obj物件中的某個屬性值為null,則不進行資料庫對應欄位的更新
  2. updateByPrimaryKey(Object obj)
    與updateByPrimaryKeySelective的區別在於,如果傳入的obj物件中某個屬性值為null,會將對應的資料庫欄位賦值為null。

2. 舉例說明

User類
Class User{
	 Integer id;
	 String name;
	 Integer age;
	 String address;
	 }
123456
user表
idnameageaddress
1zhangsan18taiyuan
2lisi20suzhou

User物件
建立user物件,屬性為:id=1,name=zhangsan,age=22, address=null;


利用通用mapper分別呼叫兩種方法:
UserMapper.updateByPrimaryKeySelective(user)的執行結果:

idnameageaddress
1zhangsan22taiyuan
2lisi20suzhou

UserMapper.updateByPrimaryKey(user)的執行結果:

idnameageaddress
1zhangsan22null
2lisi20suzhou

相關文章