举报投诉联系我们 手机版 热门标签 编程学
您的位置:编程学 > mybatis防止重复添加数据 MyBatis-Plus 插件-防全表更新与删除插件

mybatis防止重复添加数据 MyBatis-Plus 插件-防全表更新与删除插件

2023-04-04 09:18 MyBatis-Plus教程

mybatis防止重复添加数据 MyBatis-Plus 插件-防全表更新与删除插件

mybatis防止重复添加数据

Mybatis是一款优秀的持久层框架,它可以帮助我们快速实现数据库的增删改查,但是在使用Mybatis时,我们需要注意防止重复添加数据。

首先,在表中设置唯一索引,这样可以有效地避免重复数据的出现。当我们向表中插入数据时,如果存在重复的记录,就会出现异常信息。例如:

CREATE UNIQUE INDEX idx_name ON table_name (column1, column2);

其次,可以使用Mybatis的selectKey标签来实现防止重复数据的功能。selectKey标签可以在执行insert语句之前执行一个select语句来获取主键值。例如:

 
    SELECT LAST_INSERT_ID() 

最后,也可以使用Mybatis的@Options注解来实现防止重复数据的功能。@Options注解会将insert语句执行后返回的主键值存储到对应的JavaBean中。例如:

@Options(useGeneratedKeys = true, keyProperty = "id")

MyBatis-Plus 插件-防全表更新与删除插件

BlockAttackInnerInterceptor

针对 ​update和 ​delete语句,作用: 阻止恶意的全表更新删除

注入​MybatisPlusInterceptor​类,并配置​BlockAttackInnerInterceptor​拦截器

@Configuration
public class MybatisPlusConfig {
  @Bean
  public MybatisPlusInterceptor mybatisPlusInterceptor() {
    MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
    interceptor.addInnerInterceptor(new BlockAttackInnerInterceptor());
    return interceptor;
  }
}

测试示例(全表更新)

@SpringBootTest
public class QueryWrapperTest {

  @Autowired
  private UserService userService;

  
  @Test
  public void test() {
    User user = new User();
    user.setId(999L);
    user.setName("custom_name");
    user.setEmail("xxx@mail.com");
    // com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Prohibition of table update operation
    userService.saveOrUpdate(user, null);
  }
}

测试示例(部分更新)

@SpringBootTest
public class QueryWrapperTest {

  @Autowired
  private UserService userService;

  
  @Test
  public void test() {
    LambdaUpdateWrapper<User> wrapper = new LambdaUpdateWrapper<>();
    wrapper.eq(User::getId, 1);
    User user = new User();
    user.setId(10L);
    user.setName("custom_name");
    user.setEmail("xxx@mail.com");
    userService.saveOrUpdate(user, wrapper);
  }}


阅读全文
以上是编程学为你收集整理的mybatis防止重复添加数据 MyBatis-Plus 插件-防全表更新与删除插件全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 编程学 bianchengxue.com 版权所有 联系我们
桂ICP备19012293号-7 返回底部