mybatis-plus学习 四、查询/删除

一、查询

1、通过多个id查询用户

selectBatchIds(Collection<? extends Serializable> idList);

创建一个数组,把id放进数组中

@Test
    void testSelect(){
          
   
        List<User> userList = userMapper.selectBatchIds(Arrays.asList(1, 2, 3, 4));
        for (User user : userList) {
          
   
            System.out.println(user);
        }
    }

2、多条件查询

selectByMap(Map<String, Object> columnMap);

将多个条件放入map中

@Test
    void test(){
          
   
        HashMap<String, Object> map = new HashMap<>();
        map.put("name","yao4");
        map.put("age",18);
        List<User> userList = userMapper.selectByMap(map);
        for (User user : userList) {
          
   
            System.out.println(user);
        }

    }

3、分页查询

selectPage(E page,  Wrapper<T> queryWrapper)

在配置类中注册分页查询插件

@Bean
    public PaginationInterceptor paginationInterceptor() {
          
   
        return new PaginationInterceptor();
    }

测试

@Test
    void testPage(){
          
   
        Page page = new Page(1,5);
        userMapper.selectPage(page,null);
        List list = page.getRecords();
        System.out.println(list);
    }

Page的参数一为当前页,参数二为每一页的大小

结果

二、删除

1、通过多个id删除多个用户

deleteBatchIds(Collection<? extends Serializable> idList);

与通过多个id查询用户相同

@Test
void testDelete(){
          
   
    userMapper.deleteBatchIds(Arrays.asList(1, 2, 3, 4));
}

2、多条件删除

deleteByMap(@Param("cm") Map<String, Object> columnMap);

与多条件查询相同

@Test
    void testDeleteMap(){
          
   
        HashMap<String, Object> map = new HashMap<>();
        map.put("name","yao4");
        map.put("age",18);
        userMapper.deleteByMap(map);
    }

3、逻辑删除

有时候我们并不想要删除一条数据,想在以后可以对数据进行分析,那就可以进行逻辑删除。

逻辑删除并不会将数据删除,而是执行的更新操作,对数据进行标识,用来表示数据已被删除。

逻辑删除在Mybatis-plus中的使用方法

3.1、数据库添加字段deleted

默认值设置为0,表示没有被删除

3.2、实体类对应属性添加注解

@TableLogic
  private int deleted;

3.3、配置文件中配置用来表示是否删除的值

mybatis-plus.global-config.db-config.logic-delete-value=1
mybatis-plus.global-config.db-config.logic-not-delete-value=0

3.4、测试

再次测试delete方法

@Test
    void testLogicDelete(){
          
   
        userMapper.deleteById(1);
    }

可以看到执行的是更新语句,将deleted设置为了1,表示该行已被删除

再执行查询语句

userMapper.selectById(1);

可以看到,查询时会自动拼接上deleted=0条件

经验分享 程序员 微信小程序 职场和发展