Browse Source

BaseMapper新增update(wrapper)更新方法.

nieqiurong 1 năm trước cách đây
mục cha
commit
73b67ac22f

+ 12 - 0
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/mapper/BaseMapper.java

@@ -17,6 +17,8 @@ package com.baomidou.mybatisplus.core.mapper;
 
 
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -147,6 +149,16 @@ public interface BaseMapper<T> extends Mapper<T> {
      */
      */
     int update(@Param(Constants.ENTITY) T entity, @Param(Constants.WRAPPER) Wrapper<T> updateWrapper);
     int update(@Param(Constants.ENTITY) T entity, @Param(Constants.WRAPPER) Wrapper<T> updateWrapper);
 
 
+    /**
+     * 根据 Wrapper 更新记录
+     *
+     * @param updateWrapper {@link UpdateWrapper} or {@link LambdaUpdateWrapper}
+     * @since 3.5.4
+     */
+    default int update(@Param(Constants.WRAPPER) Wrapper<T> updateWrapper) {
+        return update(null, updateWrapper);
+    }
+
     /**
     /**
      * 根据 ID 查询
      * 根据 ID 查询
      *
      *

+ 10 - 0
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/h2/H2UserMapperTest.java

@@ -418,4 +418,14 @@ class H2UserMapperTest extends BaseTest {
         Long count = userMapper.selectCountLong();
         Long count = userMapper.selectCountLong();
         System.out.println(count);
         System.out.println(count);
     }
     }
+
+    @Test
+    void testUpdateByWrapper() {
+        var h2User = new H2User();
+        userMapper.insert(h2User);
+        var wrapper = Wrappers.<H2User>lambdaUpdate().set(H2User::getName, "testUpdateByWrapper").eq(H2User::getTestId, h2User.getTestId());
+        Assertions.assertEquals(userMapper.update(wrapper), 1);
+        Assertions.assertEquals(userMapper.selectById(h2User.getTestId()).getName(), "testUpdateByWrapper");
+    }
+
 }
 }