👉 博客主页:准Java全栈开发工程师
👉 00年出生,即将进入职场闯荡,目标赚钱,可能会有人觉得我格局小、觉得俗,但不得不承认这个世界已经不再是以一条线来分割的平面,而是围绕财富旋转的球面,成为有钱人不是为了去掌控球体的转向,而是当有人恶意掌控时,努力保护好家人和自己。

AUTO 策略的作用是使用数据库 ID 自增,在使用该策略的时候一定要确保对应的数据库表设置了 ID主键自增,否则无效。
INPUT 策略为用户手工自定义 id ,使用该策略时需要取消掉数据库表中的自增属性,即取消勾选 id 自增勾选框,在添加数据时需要手动设置 id 值且必须设置,否则报错,不能成功完成添加操作。
ASSIGN_ID 策略使用雪花算法生成 id ,这也是 MP 提供的默认的 id 策略,就是我们之前所看到的那一长串的 long 型数据,使用该策略可以不手动设置 id ,但是可以手动设置 id ,如果手动设置,则使用手动设置的 id ,不使用自动生成的。
使用 UUID 策略需要注意,主键的类型不能是 Long 类型,而应该改成 String 类型,与此同时,数据库表中主键类型设置为 varchar 类型,且长度要大于 32 ,因为 UUID 生成的主键为 32 位,如果长度小的话就会导致插入失败。
mybatis-plus:
global-config:
db-config:
table-prefix: tbl_ # 设置表名前缀
id-type: assign_id # 设置 id 生成策略
@Test
void testDeleteBatchIds(){
ArrayList<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
userMapper.deleteBatchIds(list);
}
@Test
void testDeleteBatchIds(){
ArrayList<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
userMapper.selectBatchIds(list);
}
表中新增一列,用于表示该数据是否被逻辑删除了。一般会命名为 deleted ,可根据开发实际要求进行命名,类型为 int 类型,通常 1 代表删除,0 代表未删除。
实体类需要与表进行对应,所以,当表中添加了某个字段后,实体类相应的也需要添加字段,保持一致。同时使用 @TableLogic 注解指明该字段为逻辑删除字段,value 为正常数据的值,delval 为删除数据的值。
@TableLogic(value = "0",delval = "1")
private Integer deleted;
@Test
void testDeleteById(){
int i = userMapper.deleteById(4L);
System.out.println(i);
}

mybatis-plus:
global-config:
logic-delete-field: deleted # 指明逻辑删除字段名
logic-delete-value: 1 # 删除数据值
logic-not-delete-value: 0 # 正常数据值
新增一个字段列,命名可以为 version ,也可以为其它命名,只是一个名称而已,类型为 int 类型。
@Version
private Integer version;
@Configuration
public class MpConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor(){
// 先创建 MP 的拦截器
MybatisPlusInterceptor mpInterceptor = new MybatisPlusInterceptor();
// 添加乐观锁拦截器
mpInterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
return mpInterceptor;
}
}
@Test
void testLock(){
//1.先通过要修改的数据 id 将当前数据的 version 查询出来,查询出来的 user 中肯定携带有 version 数据
User user = userMapper.selectById(4L);
//2.修改属性
user.setUsername("origin6666");
userMapper.updateById(user);
}


@Test
void testLock(){
User user = userMapper.selectById(4L);
User user2 = userMapper.selectById(4L);
user.setUsername("og6666");
user2.setUsername("og8888");
userMapper.updateById(user2);
userMapper.updateById(user);
}


👉 以上就是文章的全部内容啦,诸佬如果有任何建议都可以提哦。
👉 创作不易,如果觉得对您有帮助的话,欢迎关注✨点赞👍收藏📂哦。