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: 设置数据库表名称
总结:
  1. 条件查询
  2. 查询映射
    上面两条详见
  3. 查询条件
  4. 字段映射于表名映射
posted @ 2022-12-12 22:04  筝弈  阅读(255)  评论(0编辑  收藏  举报
2 3
4