Mybatis-Plus中增(insert)删(delete)改(update)方法讲解-V1.0

前言

        业务逻辑层接口实现类中注入 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使用小技巧

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值