
xxxxxxxxxx
//方式一:按条件查询QueryWrapper<User> qw=new QueryWrapper<>();qw.lt("age", 18);List<User> userList = userDao.selectList(qw);System.out.println(userList);
xxxxxxxxxx
//方式二:lambda格式按条件查询QueryWrapper<User> qw = new QueryWrapper<User>();qw.lambda().lt(User::getAge, 10);List<User> userList = userDao.selectList(qw);System.out.println(userList);
xxxxxxxxxx
//方式三:lambda格式按条件查询LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();lqw.lt(User::getAge, 10);List<User> userList = userDao.selectList(lqw);System.out.println(userList);
xxxxxxxxxx
//并且关系LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();//并且关系:10到30岁之间lqw.lt(User::getAge, 30).gt(User::getAge, 10);List<User> userList = userDao.selectList(lqw);System.out.println(userList);
xxxxxxxxxx
//或者关系LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();//或者关系:小于10岁或者大于30岁lqw.lt(User::getAge, 10).or().gt(User::getAge, 30);List<User> userList = userDao.selectList(lqw);System.out.println(userList);
如下搜索场景,在多条件查询中,有条件的值为空应该怎么解决?

xxxxxxxxxx
Integer minAge=10; //将来有用户传递进来,此处简化成直接定义变量了Integer maxAge=null; //将来有用户传递进来,此处简化成直接定义变量了LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();if(minAge!=null){ lqw.gt(User::getAge, minAge);}if(maxAge!=null){ lqw.lt(User::getAge, maxAge);}List<User> userList = userDao.selectList(lqw);userList.forEach(System.out::println);
xxxxxxxxxx
Integer minAge=10; //将来有用户传递进来,此处简化成直接定义变量了Integer maxAge=null; //将来有用户传递进来,此处简化成直接定义变量了LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();//参数1:如果表达式为true,那么查询才使用该条件lqw.gt(minAge!=null,User::getAge, minAge);lqw.lt(maxAge!=null,User::getAge, maxAge);List<User> userList = userDao.selectList(lqw);userList.forEach(System.out::println);
xxxxxxxxxx
Integer minAge=10; //将来有用户传递进来,此处简化成直接定义变量了Integer maxAge=null; //将来有用户传递进来,此处简化成直接定义变量了LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();//参数1:如果表达式为true,那么查询才使用该条件lqw.gt(minAge!=null,User::getAge, minAge) .lt(maxAge!=null,User::getAge, maxAge);List<User> userList = userDao.selectList(lqw);userList.forEach(System.out::println);
xxxxxxxxxx
/*LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();lqw.select(User::getId, User::getName, User::getAge);*///或者QueryWrapper<User> lqw = new QueryWrapper<User>();lqw.select("id", "name", "age", "tel");List<User> userList = userDao.selectList(lqw);System.out.println(userList);
xxxxxxxxxx
QueryWrapper<User> lqw = new QueryWrapper<User>();lqw.select("count(*) as count, tel");lqw.groupBy("tel");List<Map<String, Object>> userList = userDao.selectMaps(lqw);System.out.println(userList);
多条件查询有哪些组合?
xxxxxxxxxx
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();//等同于=lqw.eq(User::getName, "Jerry").eq(User::getPassword, "jerry");User loginUser = userDao.selectOne(lqw);System.out.println(loginUser);
xxxxxxxxxx
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();//范围查询 lt le gt ge eq betweenlqw.between(User::getAge, 10, 30);List<User> userList = userDao.selectList(lqw);System.out.println(userList);
xxxxxxxxxx
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();//模糊匹配 likelqw.likeLeft(User::getName, "J");List<User> userList = userDao.selectList(lqw);System.out.println(userList);
xxxxxxxxxx
QueryWrapper<User> qw = new QueryWrapper<User>();qw.select("gender","count(*) as nums");qw.groupBy("gender");List<Map<String, Object>> maps = userDao.selectMaps(qw);System.out.println(maps);
题目:基于MyBatisPlus_Ex1模块,完成Top5功能的开发。
说明:
①:Top5指根据销售量排序(提示:对销售量进行降序排序)
②:Top5是仅获取前5条数据(提示:使用分页功能控制数据显示数量)
思考表的字段和实体类的属性不对应,查询会怎么样?



xxxxxxxxxx
("tbl_user")public class User { /* id为Long类型,因为数据库中id为bigint类型, 并且mybatis有自己的一套id生成方案,生成出来的id必须是Long类型 */ private Long id; private String name; (value = "pwd",select = false) private String password; private Integer age; private String tel; (exist = false) //表示online字段不参与CRUD操作 private Boolean online;}