• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
龙师傅文徒弟
博客园    首页    新随笔    联系   管理    订阅  订阅

查询和删除

批量查询
 @Test
    public void testSelectByBatch() {   //批量查询
        List<User> users = userMapper.selectBatchIds(Arrays.asList(1, 2, 3));
        users.forEach(System.out::println);
    }

 


按条件查询之一 使用map操作,按两个字段查询,可以看到自动为我们拼接了sql查询语句
@Test
    public void testSelectByBatchIds() {
        HashMap<String, Object> map = new HashMap<>();
        map.put("name", "龙师傅");
        map.put("age", 25);
        List<User> userList = userMapper.selectByMap(map);
        userList.forEach(System.out::println);
    }

 

 

分页查询

1、配置分页插件

public class MybatisPlusConfig {

    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor=new MybatisPlusInterceptor();

        //注册乐观锁插件
        interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());

        //分页插件
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }

    //使用分页插件时,设置为false, --> setUseGeneratedShortKey(false)
    @Bean
    public ConfigurationCustomizer configurationCustomizer() {
        return configuration -> configuration.setUseGeneratedShortKey(false);
    }
}

 2、测试,直接使用 page 对象

 //测试分页查询
    @Test
    public void testPage() {
        Page<User> userPage = new Page<>(3, 3);
        userMapper.selectPage(userPage, null);
        userPage.getRecords().forEach(System.out::println);
    }

 

 

 

删除

物理删除:从数据库中直接删除

逻辑删除:在数据库中没有删除,而是通过一个变量来让它失效! deleted=0 ->deleted=1

 

基本删除

 //删除

    @Test
    public void TestDeleteById() {
        userMapper.deleteById(1367843260306825217L);
    }

    //通过ID批量删除
    @Test
    public void testDeleteByIds() {
        userMapper.deleteBatchIds(Arrays.asList(1367833264080838657L, 1367843450782863363L));
    }

    //通过map删除
    @Test
    public void testDeleteMap() {
        HashMap<String, Object> map = new HashMap<>();
        map.put("name", "龙师傅");
        userMapper.deleteByMap(map);
    }

逻辑删除:

1、数据库添加字段 deleted

2、实体类添加字段和注解

 3、配置

步骤1、在application.yml中配置

 

 

mybatis-plus:
  global-config:
    db-config:
      logic-delete-field: flag  # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2)
      logic-delete-value: 1 # 逻辑已删除值(默认为 1)
      logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)

步骤2: 实体类字段上加上@TableLogic注解

 

 

 @TableLogic

private Integer deleted;

4、测试,可以看到,它虽然执行的是删除操作,但背后却是更新 deleted,数据还在数据库中,这就是逻辑删除

 

 

mybatis-plus:
  global-config:
    db-config:
      logic-delete-field: flag  # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2)
      logic-delete-value: 1 # 逻辑已删除值(默认为 1)
      logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
posted @ 2021-03-06 17:48  龙师傅文徒弟  阅读(153)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3