一,基本查询
//测试查询By Id
@Test public void testselectById(){ TUser tUser = tUserMapper.selectById(1L); System.out.println(tUser); }
// 测试批量查询!By ids
@Test public void testselectByBatchid(){ List<TUser> users = tUserMapper.selectBatchIds (Arrays. asList(1, 2, 3)); users. forEach (System.out::println); }
//按条件查询之一使用map操作
@Test public void testselectByBatchIds() { HashMap<String, Object> map = new HashMap<String, Object>(); //自定义要查询
map.put("username", "zl222"); List<TUser> tUsers = tUserMapper.selectByMap (map); tUsers.forEach (System.out::println); }
构造器查询
构造器图文介绍
- Wrapper : 条件构造抽象类,最顶端父类,抽象类中提供4个方法西面贴源码展示
- AbstractWrapper : 用于查询条件封装,生成 sql 的 where 条件
- AbstractLambdaWrapper : Lambda 语法使用 Wrapper统一处理解析 lambda 获取 column。
- LambdaQueryWrapper :看名称也能明白就是用于Lambda语法使用的查询Wrapper
- LambdaUpdateWrapper : Lambda 更新封装Wrapper
- QueryWrapper : Entity 对象封装操作类,不是用lambda语法
- UpdateWrapper : Update 条件封装,用于Entity对象更新操作
使用方法
小小一例:
QueryWrapper<TmStockroom> wrapper = new QueryWrapper<>(); wrapper.eq("code",req.getCode()) .or() .eq("name",req.getName()); List<TmStockroom> tmStockrooms = stockroomCommandMapper.selectList(wrapper); //tmStockrooms.forEach(System.out::println);
if(tmStockrooms.size()!=0){ throw new BusinessException("仓库code或者仓库名称已存在"); }
控制台sql:
二,分页查询
1,引入MyBatisPlus插件
@Bean public PaginationInterceptor paginationInterceptor() { return new PaginationInterceptor(); }
2,分页查询
@Test public void testPage(){ //第一个参数:当前页数 //第二个参数:显示数据条数
Page<TUser> tUserPage = new Page<>(1,5); IPage<TUser> tUserIPage = tUserMapper.selectPage(tUserPage, null); tUserIPage.getRecords().forEach(System.out::println); }