MyBatisPlus学习——查询条件与字段映射与表名映射
查询条件
- 范围匹配(> 、=、between)
- 模糊匹配(like)
- 控制判定(null)
- 包含性匹配(in)
- 分组(group)
- 排序(order)
- ....
范例:
-
用户登录(eq匹配)
@Test void testEqWapper(){ //条件查询 LambdaQueryWrapper<User> lambdaQueryWrapper=new LambdaQueryWrapper<>(); //等同于等于 lambdaQueryWrapper.eq(User::getName,userQuery.getName()).eq(User::getPassword,userQuery.getPassword()); //查单条数据,用单一对象接数据 User userOne=UserDao.selectOne(lambdaQueryWrapper); System.out.println(user); }
-
购物设定价格区间,户籍设定年龄区间(le ge匹配 或 between匹配)
//条件查询:范围查询 @Test void testScopeWapper(){ LambdaQueryWrapper<User> lambdaQueryWrapper=new LambdaQueryWrapper<>(); //方案一:设定上限和下限 lambdaQueryWrapper.le(User::getAge,userQuery.getAge()).ge(User::getAge,userQuery.getAge2()); //方案二:谁当范围 lambdaQueryWrapper.between(User::getAge,userQuery.getAge,userQuery.getAge2()); List<Book> bookList = bookDao.selectList(lambdaQueryWrapper); System.out.println(bookList); }
-
查信息,搜索新闻(非全文检索班:like匹配)
//条件查询:模糊匹配 @Test void testLikeWapper(){ LambdaQueryWrapper<Book> lambdaQueryWrapper=new LambdaQueryWrapper<>(); //包含“软”字的 lambdaQueryWrapper.like(Book::getType,"软"); //左边%的:%软 // lambdaQueryWrapper.likeRight(Book::getType,"软"); //右边%的:软% // lambdaQueryWrapper.likeLeft(Book::getType,"软"); List<Book> bookList = bookDao.selectList(lambdaQueryWrapper); System.out.println(bookList); }
-
统计报表(分组查询聚合函数)
//数据统计及分类 @Test void testCountWapper(){ QueryWrapper<Book> queryWrapper= new QueryWrapper<>(); queryWrapper.select("count(*) as count, type"); queryWrapper.groupBy("type"); List<Map<String,Object>> bookList=bookDao.selectMaps(queryWrapper); System.out.println(bookList); }
-
更多查询条件设置参看:https://mybatis.plus/guide/wrapper.html#abstractwapper
映射匹配兼容性
字端映射与表名映射
-
问题一:字段与编码属性设计不同步
@TableField(value="数据库中字段名称") private String 属性名;
-
问题二:编码中添加了数据库中未定义的属性
@TableField(exist = false) private String 属性名;
-
问题三:采用默认查询开放了更多的字段查看权限
@TableField(value="数据库中字段名称",select =false) private String 属性名;
- 名称:@TableField
- 类型:属性注解
- 位置:模型类属性定义上方
- 作用:设定当前属性对应的数据库表中的字段关系
- 相关属性:
- value(默认):设置数据库表字段名称
- exist: 设置属性在数据库表字段中是否存在,默认为true。此属性无法与value合并使用
- select: 设置属性是否参与查询,此属性与select()映射配置不冲突
-
问题四:表名与编码开发设计不同步
@TableName("数据库表名") public class User{ }
- 名称:@TableName
- 类型:类注解
- 位置:模型类定义上方
- 作用:设置当前类对应于数据库表关系
- 相关属性:
- value: 设置数据库表名称
总结:
- 条件查询
- 查询映射
上面两条详见 - 查询条件
- 字段映射于表名映射