MybatisPlus的Insert和Delete

本文档介绍了使用MyBatisPlus进行数据插入与删除操作,包括雪花算法主键生成策略、@TableId注解使用、逻辑删除的配置与应用。通过测试类展示了如何执行插入和删除操作,并详细解释了遇到的问题及解决方案。
摘要由CSDN通过智能技术生成

说明:
1.我是看B站狂神的视频学习的,所以笔记与狂神讲的很相似
2.学习MyBatisPlus,看官方文档也很重要

增加(insert)


1.编写测试类

@Test
public void testInsert(){
    User user = new User();
    user.setName("lxh");
    user.setAge(20);
    user.setEmail("238468734@qq.com");

    int insert = userMapper.insert(user);
    System.out.println(insert);
    System.out.println(user);
}

结果:
 
在这里插入图片描述
遇见的问题1:
  此处如果生成的id是0,并且再次执行插入测试时,提示主键冲突,原因可能是id类型Long的L写成小写了。
 
   在创建用户实例时并未给id赋值,但是打印出来的id有值,这是因为MybatisPlus(后面简称MP)有默认的主键生成策略—雪花算法,这个id之所以这么长一串也是因为这个默认的主键生成策略。
 

 

2.关于MP主键的那些事


主键生成策略有很多,雪花算法只是其中之一。

1.雪花算法

snowflake算法是Twitter开源的分布式ID生成算法,结果是一个long类型的ID 。其核心思想:使用41bit作为毫秒数,10bit作为机器的ID(5bit数据中心,5bit的机器ID),12bit作为毫秒内的流水号(意味着每个节点在每个毫秒可以产生4096个ID),最后还有一个符号位,永远是0。

2.@TableId设置主键

我们平时常用的是自增id,通过注解@TableId可实现id自增
IdType的所有类型:

public enum IdType {
    AUTO(0),  //数据库id自增
    NONE(1),  //未设置主键
    INPUT(2),  //手动输入
    ID_WORKER(3), //默认全局唯一
    UUID(4),   //全局唯一id uuid
    ID_WORKER_STR(5);  //ID_WORKER字符串表示
}

1.修改数据库中的id字段
在这里插入图片描述
此处可能遇见修改不成功的问题:点击查看解决方法

2.修改User类,给Id加上注解
 
在这里插入图片描述

此时再运行测试类查看结果,可以看到:
在这里插入图片描述
 
 

删除(Delete)


现有表中数据如图:
在这里插入图片描述

1.编写测试类

 @Test
    //根据Id删除
    void testDelete(){
        int i = userMapper.deleteById(5L);
        if (i>0)
            System.out.println("删除成功");
        else
            System.out.println("删除失败");
    }
    //用map删除
    @Test
    void testDelete2(){
        HashMap<String, Object> map = new HashMap<>();
        map.put("name","小灰111");
        int i = userMapper.deleteByMap(map);
        if (i>0)
            System.out.println("删除成功");
        else
            System.out.println("删除失败");
    }

结果:
在这里插入图片描述

2.逻辑删除

删除分为逻辑删除和物理删除。
逻辑删除就是用户删除某条记录时,实际上只是改变了这条记录的某个状态值,并未真正删除,但是用户没法再看到这条信息,对于用户来说,是删除了。但是管理员还是能看到所有信息的。

  1. 数据库中增加delete字段
    在这里插入图片描述

2.修改User类,增加字段,添加逻辑删除注解

@TableLogic  //逻辑删除注解
private Integer deleted;

3.配置

application.properties:

# 逻辑已删除值(默认为 1)
mybatis-plus.global-config.db-config.logic-delete-value=1 
# 逻辑未删除值(默认为 0)
mybatis-plus.global-config.db-config.logic-not-delete-value=0 

在这里插入图片描述

4.执行测试类

    @Test
    //根据Id删除
    void testDelete(){
        int i = userMapper.deleteById(4L);
        if (i>0)
            System.out.println("删除成功");
        else
            System.out.println("删除失败");
    }

在这里插入图片描述
------>
在这里插入图片描述



在之前的版本中还要写一个配置类,添加上逻辑删除组件才算完全配置完成,
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值