本系列博客其他文章請點擊下方鏈接查看
【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();