关于mybatis的更新数据的两个方法updateByPrimaryKey 和updateByPrimaryKeySelective

updateByPrimaryKeySelective 和 updateByPrimaryKey两个方法的本质区别,我想讲一个例子来说明。

前端发送给后端的数据,在后端封装成一个BO对象。BO对象和和后端的某一个对象有相似点(有部分属性是相同的),也有差异点!

当我们通过 BeanUtils属性赋值时,将前端的BO对象赋值给后端的实体对象,某些实体对象的属性此时是没有赋值的,原因是差异点!

当我们通过BO赋值给后端的实体对象作为一个条件,在数据库中修改数据时,mybatis提供了updateByPrimaryKey 和 updateByPrimaryKeySelective 两个方法。其中updateByPrimaryKey方法就会根据传递的对象属性对数据库进行全部修改,因为差异点,条件中的某些属性是为空的,该方法会将空值覆盖掉数据库中已有的值。当你只想修改数据库中的某几个字段时,就不要用该方法。

而updateByPrimaryKeySelective方法,只会在数据库中修改传递条件中存在的值,其余的属性保持不变。

猜你喜欢

转载自blog.csdn.net/awodwde/article/details/119749159