【Mybatis-Plus學習筆記(四)】更新


本系列博客其他文章請點擊下方鏈接查看
【Mybatis-Plus學習筆記】目錄

根據id更新

MP中的updateById需要傳入一個實體(必須有ID),不為null的值都會被更改,返回影響的行數。如下:

        User user = new User();
        user.setId(1087982257332887553L);
        user.setName("王十蛋");
        int row = userMapper.updateById(user);
        System.out.println("影響的行數:" + row);

相當於

''DEBUG==>  Preparing: UPDATE user SET name=?, age=? WHERE id=? 
''DEBUG==> Parameters: 王十蛋(String), 0(Integer), 1087982257332887553(Long)

以條件構造器作為參數的更新方法

UpdateWrapper<User> queryWrapper = new UpdateWrapper<>();
        queryWrapper.likeRight("name", "王").ge("age", 25);
        User user = new User();
        user.setId(1087982257332887553L);
        user.setName("王九蛋");
        user.setAge(15);
        int row = userMapper.update(user, queryWrapper);
        System.out.println("影響的行數:" + row);

相當於

''DEBUG==>  Preparing: UPDATE user SET name=?, age=? WHERE name LIKE ? AND age >= ? 
''DEBUG==> Parameters: 王九蛋(String), 15(Integer), 王%(String), 25(Integer)

和Select語句一樣,UpdateWrapper也有一個帶有實體參數的構造器,這個實體中不為null的參數會出現在Where子句中。非常簡單就不舉例子了。

條件構造器中set方法使用

每次更新都要跟新實體非常的麻煩,可以直接在構造器后使用set方法來實現更改。如下

        UpdateWrapper<User> queryWrapper = new UpdateWrapper<>();
        queryWrapper.likeRight("name", "王").ge("age", 25).set("age", 26);

Lambda條件構造器

更新也有 Lambda條件構造器,如下:

LambdaUpdateWrapper<User> lambdaUpdateWrapper = Wrappers.<User>lambdaUpdate();
        lambdaUpdateWrapper.eq(User::getName, "李藝偉").eq(User::getAge, 28).set(User::getAge, 30);
        int row = userMapper.update(null, lambdaUpdateWrapper);
        System.out.println("影響的行數:" + row);

相當於

''DEBUG==>  Preparing: UPDATE user SET age=? WHERE name = ? AND age = ? 
''DEBUG==> Parameters: 30(Integer), 李藝偉(String), 28(Integer)

和查詢一樣,更新也有一個鏈式Lambda條件構造器,如下:

boolean update = new LambdaUpdateChainWrapper<User>(userMapper)
                .eq(User::getName, "李藝偉").eq(User::getAge, 28).set(User::getAge, 30)
                .update();


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM