MP 的更新
/**
* 傳入實體對象 ID 必須設置
*/
@Test
public void updataById() {
User user = new User();
user.setId(1087982257332887553L);
user.setAge(35);
//生成的sql: UPDATE user SET age=? WHERE id=?
int rows = userMapper.updateById(user);
System.out.println(rows);
}
/**
* 根據whereEntity 條件,更新
* 第一個參數傳入entity 實體類對象 會被設置為要set的值(set條件值可以為null)
* 第二個參數 updateWrapper 實體對象封裝操作類(可以為null里面的entity用於生成where語句條件)
* 生成的sql:UPDATE user SET age=?, email=? WHERE name = ? AND age = ?
* new UpdateWrapper<>() 也可傳入實體類對象 對象屬性也會被作為where的條件
*/
@Test
public void update() {
UpdateWrapper<User> wrapper = new UpdateWrapper<>();
wrapper.eq("name", "李一偉").eq("age", 28);
//如果更新個別字段 使用set()方法
wrapper.eq("name", "李一偉").set(true, "age", 30);
User user = new User();
user.setEmail("lyw2019@boamidou.com");
user.setAge(29);
int rows= userMapper.update(user, wrapper);
}
/**
* Lambda函數更新
*
*/
@Test
public void updateLambda() {
LambdaUpdateWrapper<User> lambdaUpdate = Wrappers.<User>lambdaUpdate();
lambdaUpdate.eq(User::getName, "李一偉").eq(User::getAge, 30).set(User::getAge, 31);
//生成的sql: UPDATE user SET age=? WHERE name = ? AND age = ?
int rows = userMapper.update(null, lambdaUpdate);
System.out.println(rows);
}
/**
* Lambda函數更新 鏈式調用 構造器傳入接口實現對象
* 返回boolean 值
*
*/
@Test
public void updateLambdaChina() {
boolean updatewrapper = new LambdaUpdateChainWrapper<User>(userMapper)
.eq(User::getName, "李一偉").eq(User::getAge, 30).set(User::getAge, 31).update();
//生成的sql: UPDATE user SET age=? WHERE name = ? AND age = ?
System.out.println(updatewrapper);
}
下面測試刪除方法
根據id刪除
/**
* deleteById 根據id
*
*/
@Test
public void deleteById(){
int i = userMapper.deleteById(1149166824346210305L);
//生成的sql : DELETE FROM user WHERE id=?
System.out.println(i);
}
普通方法刪除
/**
* deleteByMap
*
*/
@Test
public void deleteByMap(){
Map<String,Object> columnMap = new HashMap<>();
columnMap.put("name", "李一偉");
columnMap.put("age", 25);
int i = userMapper.deleteByMap(columnMap);
//生成的sql :DELETE FROM user WHERE name = ? AND age = ?
System.out.println(i);
}
/**
* deleteBatchIds
* 批量刪除時使用
*/
@Test
public void deleteBatchIds(){
int i = userMapper.deleteBatchIds(Arrays.asList(74564564653453L,8754454676445L,85567L));
//生成的sql : DELETE FROM user WHERE id IN ( ? , ? , ? )
System.out.println(i);
}
/**
* deleteByWrapper
*
*Wrappers.<User>lambdaQuery() 可以傳入實體類 屬性會被生成where條件
*/
@Test
public void deleteByWrapper(){
LambdaQueryWrapper<User> wrapper = Wrappers.<User>lambdaQuery();
wrapper.eq(User::getAge,27).or().gt(User::getAge,40);
int i = userMapper.delete(wrapper);
//生成的sql :DELETE FROM user WHERE age = ? OR age > ?
System.out.println(i);
}
以條件構造器為參數的刪除