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条件