前言
业务逻辑层接口实现类中注入 Mapper 进行业务处理。
一,增(insert)
1,根据实体类添加数据。
int i=userMapper.insert(User entity);
例:
User user = new User();
user.setAge(23);
user.setAddress("上海");
user.setSex("男");
user.setCard("410482");
int i = userMapper.insert(user);
SQL语句如下:
==> Preparing: INSERT INTO user ( sex, age, address, card, version ) VALUES ( ?, ?, ?, ?, ? )
==> Parameters: 男(String), 23(Integer), 上海(String), 410482(String), 0(Integer)
<== Updates: 1
二,删(delete)
1, 根据单个 id 进行删除。
删除成功返回 1 删除失败返回 0 .
int i = userMapper.deleteById(Serializable id);
例:
Integer id = 22;
int i = userMapper.deleteById(id);
SQL语句如下:
==> Preparing: DELETE FROM user WHERE id=?
==> Parameters: 22(Integer)
<== Updates: 0
2,根据 ids集合进行批量删除。
多条数据只要有一条删除成功返回 1 删除失败返回 0
int i = userMapper.deleteBatchIds(Collection < ?; extends Serializable> );
例:
List<String> idList = Arrays.asList("10", "11", "23");
int i = userMapper.deleteBatchIds(idList);
SQL语句如下:
==> Preparing: DELETE FROM user WHERE id IN ( ? , ? , ? )
==> Parameters: 10(String), 11(String), 23(String)
<== Updates: 1
3,根据传入的 Map集合进行删除。
根据传入的数据进行删除,可能删除多条,也可能删除一条,删除时根据 map 集合的所有条件并联。
多条数据只要有一条删除成功返回 1 删除失败返回 0
int i = userMapper.deleteByMap(Map < String, 0bject > columnMap);
例:
Map<String, Object> columnMap = new HashMap<>(5);
columnMap.put("id", 24);
columnMap.put("name", "李");
// 当 map 集合的 key 在实体类表中没有时,直接报错
// columnMap.put("ceshi", 11);
int i = userMapper.deleteByMap(columnMap);
SQL语句如下:
==> Preparing: DELETE FROM user WHERE name = ? AND id = ?
==> Parameters: 李(String), 24(Integer)
<== Updates: 0
4,根据构造的 Wrapper 进行删除。(删除条件多样化,删除某个区间,模糊查询等)
根据传入的 QueryWrapper 进行删除,可能删除多条,也可能删除一条,删除逻辑所有的queryWrapper 条件并行。
多条数据只要有一条删除成功返回 1 删除失败返回 0
int i = userMapper.delete(Wrapper < User > queryWrapper);
例: 复杂的 QueryWrapper 使用形式
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "赵六");
queryWrapper.eq("id", 52);
queryWrapper.eq("sex", "女");
queryWrapper.like("address", "人");
int i = userMapper.delete(queryWrapper);
例: 简单的 LambdaQueryWrapper 使用形式 (推荐)
LambdaQueryWrapper 可以在运行时判断实体类和数据库字段的映射,可以在编译时就显示暴漏错误,代码量少链式编程,好处多多。
如需了解 Wrapper 使用小技巧 请移步另一篇博客 →→→ Wrappers使用小技巧
int i = userMapper.delete(Wrappers.<User>lambdaQuery()
.eq(User::getName,"赵六")
.eq(User::getId,52)
.eq(User::getSex,"女")
.like(User::getAddress,"人")
);
SQL语句如下:
==> Preparing: DELETE FROM user WHERE (name = ? AND id = ? AND sex = ? AND address LIKE ?)
==> Parameters: 赵六(String), 52(Integer), 女(String), %人%(String)
<== Updates: 0
三,改(update)
1,根据实体类 id 进行修改。
修改成功返回 1 修改失败返回 0 .
int i = userMapper.updateById(User entity);
例:
User user = new User();
user.setId(28);
user.setAddress("上海");
user.setSex("男");
user.setCard("410482");
int i = userMapper.updateById(user);
SQL语句如下:
==> Preparing: UPDATE user SET sex=?, age=?, address=?, card=? WHERE id=?
==> Parameters: 男(String), 0(Integer), 上海(String), 410482(String), 28(Integer)
<== Updates: 1
2,根据 实体类和 Wrapper 进行修改。
修改成功返回 1 修改失败返回 0 .
(此方法个人理解可能有问题,但下述能用)
int i = userMapper.update(User entity, Wrapper < User > updateWrapper);
例:
int i = userMapper.update(null, Wrappers.<User>lambdaUpdate()
.eq(User::getAge, 333)
.set(User::getSex,"鬼怪")
);
SQL语句如下:
==> Preparing: UPDATE user SET sex=? WHERE (age = ?)
==> Parameters: 鬼怪(String), 333(Integer)
<== Updates: 0
如需了解 Wrapper 使用小技巧 请移步另一篇博客 →→→ Wrappers使用小技巧
1万+

被折叠的 条评论
为什么被折叠?



