MybatisPlus之基本使用

实体类相关注解

      @TableName注解用于指定当前实体类映射的表名:
      如果实体类类名和表名一致,该注解可以忽略;如果不一致,则必须指定表名;
      1)value:指定表名
      @TableId注解指定主键列映射的属性:
      1)value = "id":指定主键列列名
      2)type = IdType.AUTO:表示主键列开启了主键自增;添加操作还会自动实现主键值回填;
       @TableField注解指定非主键列的属性映射的列名:
       如果实体类的属性名和表的列名一致,该注解可以忽略;如果不一致,则必须指定列名;
       1)value:指定列名
        //表示该属性在表中没有映射的列,当从数据库中查询后返回对象的时候,如果数据库中不存在该列,则需要给该属性上添加该注解,不然会报错
        @TableField(exist = false)

主启动类添加注解

`

//配置扫描器指定Mapper接口的包
@MapperScan(basePackages = "com.xa.mapper")

不想在主启动类上添加这个注解的话,可以在mapper包下的接口上都添加**@Mapper**注解

参数Wrapper对象

参数Wrapper对象表示(封装的是)条件,所以将其称为条件对象,其常用的子类有两个:

​ 1)QueryWrapper

​ 2)LambdaQueryWrapper

QueryWrapper

​ 1)一般都是无参构造器创建对象

​ 2)调用相应的方法向QueryWrapper对象中封装相应的条件:

方法大致解析

  1. eq(String cloumn, Object value) — 参数一列等于参数二的值 — =
  2. ge(String cloumn, Object value) — 参数一列大于等于参数二的值 — >=
  3. gt(String cloumn, Object value) — 参数一列大于参数二的值 — >
  4. le(String cloumn, Object value) — 参数一列小于等于参数二的值 — <=
  5. lt(String cloumn, Object value) — 参数一列小于参数二的值 — <
  6. ne(String cloumn, Object value) — 参数一列不等于参数二的值 — !=
  7. between(String cloumn, Object v1, Object v2) — 参数一列的值在参数二和参数三值之间 — between and
  8. in(String cloumn, Object…values) — 参数一列的值在参数二可变长参数内 — in (值…)
  9. notin(String cloumn, Object…values) — 参数一列的值不在参数二可变长参数内 — not in (值…)
  10. like(String cloumn, Object value) — 参数一列的值像参数二值 — like …
  11. notLike(String cloumn, Object value) — not like …
  12. orderByAsc(String…cloumn) — 按照参数列升序排序
  13. orderByDesc(String…cloumn) — 按照参数列降序排序
  14. groupBy(String…cloumn) — 按照参数列分组

LambdaQueryWrapper对象

LambdaQueryWrapper的创建 – 一般也是无参构造器

 LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();

组装(封装)条件:

​ 用的方法和QueryWrapper是一样的,区别是QueryWrapper的方法中列名是字符串形式,而LambdaQueryWrapper列名是函数式接口实体类列名::属性的get方法名从实体类中通过get方法拿到属性即列;可以采用连调方式来进行封装条件,更加简洁

示例:

List<User> userList = userMapper.selectList(
                new LambdaQueryWrapper<User>()
                        .eq(!StringUtils.isEmpty(sex), User::getSex, sex)
                        .gt(age > 0, User::getAge, age)
        );

分页

第一步:

​ 注入MybatisPlusInterceptor 类

    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(){

        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();

        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));

        return interceptor;
    }

第二步:不带条件

//对查询的所有用户分页,每页2行第1页
        Page<Users> pg = new Page<>(1,2);

        pg = usersService.page(pg);

        long total = pg.getTotal();//总行数
        System.out.println(total);//4

        long pages = pg.getPages();//总页数
        System.out.println(pages);//2

        List<Users> userList = pg.getRecords();//当前页数据
        //[Users(id=2, name=张三, age=21, sex=男, birthday=2021-06-24),
        // Users(id=3, name=李四, age=22, sex=女, birthday=2021-06-24)]
        System.out.println(userList);
    }

第二步:带条件

    @Test
    public void pageTest2(){

        //查询所有性别为女的用户并分页,每页1行第1页
        Page<Users> pg = new Page<>(1,1);

        pg = usersService.page(pg, new LambdaQueryWrapper<Users>()
                .eq(Users::getSex, "女")
        );

        //[Users(id=3, name=李四, age=22, sex=女, birthday=2021-06-24)]
        System.out.println(pg.getRecords());
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值