Mybatis-Plus的使用 2

本文详细介绍了Mybatis-Plus在数据添加时的主键生成策略,包括19位字符串(雪花算法)、19位数字、UUID和自增长。针对每种策略,从测试类、实体类到数据库的修改,逐一进行步骤解析,并强调了不同策略在实际使用中可能遇到的问题,如数字长度限制和前端显示问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、mybatis-plus的数据添加

                项目是连用Mybatis-Plus的使用 1里面的项目

        1、使用自动设置的19位字符串作为id(使用雪花算法自动生成)

                1.1测试类(自动生成的方法insert())

@Test
    public void testAdd(){
        User user = new User();
        user.setUsername("西沟");
        user.setPassword("484848");
        userMapper.insert(user);
    }

        如果这样直接添加的话,就会出错。原因是这个自动生成的方法给我们的id生成一个19位的字符串,所以运行时出错,而且要在对象中声明谁是主键,要不然也会报错。

        

        所以,我们要对数据库以及User里面的id对象进行修改。

                1.2.User实体类

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    @TableId(type = IdType.ID_WORKER_STR)
    //这个注解就是表明id为主键,而且类型是19位的字符串
    private String id;
    private String username;
    private String password;
}

                1.3 效果:

        2、使用19位的数字作为主键(不建议使用)

        因为Vue中的number类型只有17位,如果这时将数据传给前端的的话,会把自动把id截掉一部分。

                2.1测试类(不变)

                2.2User实体类

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    //@TableId(type = IdType.ID_WORKER_STR) //这个注解就是表明id为主键,而且类型是19位的字符串
    @TableId(type = IdType.ID_WORKER)
    //这个注解就是表明id为主键,而且类型是19位的数字
    private Long id;
    private String username;
    private String password;
}

                2.3修改数据库

                2.4效果(记得把之前的数据删除)

 

        3、使用UUID作为主键

                3.1.测试类不变

                3.2.User实体类

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    //@TableId(type = IdType.ID_WORKER_STR) //这个注解就是表明id为主键,而且类型是19位的字符串
    //@TableId(type = IdType.ID_WORKER)//这个注解就是表明id为主键,而且类型是19位的数字
    @TableId(type = IdType.UUID)
    //类型是UUID
    private String id;
    private String username;
    private String password;
}

                3.3.修改数据库(可以把之前数据库的数据删掉) 

                3.4.效果

 

        4、使用自增长来作为主键

                4.1.测试类不变

                4.2.User实体类

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    //@TableId(type = IdType.ID_WORKER_STR) //这个注解就是表明id为主键,而且类型是19位的字符串
    //@TableId(type = IdType.ID_WORKER)//这个注解就是表明id为主键,而且类型是19位的数字
    //@TableId(type = IdType.UUID)//类型是UUID
    @TableId(type = IdType.AUTO)
    private Integer id;
    private String username;
    private String password;
}

                4.3.修改数据库(把之前的数据删掉)

 

                4.4.效果

 

         5、自己输入主键

                5.1.测试类

@Test
    public void testAdd(){
        User user = new User();
        user.setId(111);
        user.setUsername("西沟");
        user.setPassword("484848");
        userMapper.insert(user);
    }

                5.2.User实体类

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    //@TableId(type = IdType.ID_WORKER_STR) //这个注解就是表明id为主键,而且类型是19位的字符串
    //@TableId(type = IdType.ID_WORKER)//这个注解就是表明id为主键,而且类型是19位的数字
    //@TableId(type = IdType.UUID)//类型是UUID
    //@TableId(type = IdType.AUTO)//自动递增
    @TableId(type = IdType.INPUT)
    //@TableId(type = IdType.NONE)这个也是相同的效果
    private Integer id;
    private String username;
    private String password;
}

                5.3 修改数据库(取消id自动递增)

                5.4 效果

 以上是我自己的见解,如果知识点有误,还望告知。多多点赞,你们的点赞就是我继续创作的动力,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值