[mybatis-plus 基本应用]


前言

现在越来越多的项目使用mybatis-plus来替换mybatis,相较于mybatis,plus更注重于逻辑,不用手动的在xml中编写sql,所以写下这篇文章用来记录自己的学习内容。


一、将mybatis-plus引入spring项目

在pom文件中添加依赖

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.2</version>
        </dependency>

在配置文件中添加配置

spring:
  datasource:
    username: root
    password: root
    url: jdbc:mysql://localhost:3306/plustest
    driver-class-name: com.mysql.cj.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource
#想要查看执行的 sql 语句
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

在实体类中添加@TableName(“user”)
在mapper接口中继承BaseMapper接口,泛型添加实体类对象

二、动态条件查询QueryWrapper

1.查询user表中姓名包含q,并且年龄在12到15之间,并且id为5的数据
条件的第一个参数为字段名称

 QueryWrapper<User> userQueryWrapper = new QueryWrapper<>();
        userQueryWrapper.like("name", "q").
                between("age", 12, 15).
                le("id", 5);
        return mapper.selectList(userQueryWrapper);

2.设置查询字段为name,age

userQueryWrapper.select("name", "age");

3.查询优先级,查询姓名中包含q,年龄小于15或邮箱为空的数据

        QueryWrapper<User> userQueryWrapper = new QueryWrapper<>();
        userQueryWrapper.select("name", "age");
        userQueryWrapper.like("name", "q").
                and(i -> i.lt("age", 15).or().isNull("email"));
        return mapper.selectList(userQueryWrapper);

4.LambdaQueryWrapper 查询姓名中包含q,年龄小于15或邮箱为空的数据

 LambdaQueryWrapper<User> userLambdaQueryWrapper = new LambdaQueryWrapper<>();
        userLambdaQueryWrapper.like(User::getName,"q")
                .and(i -> i.lt(User::getAge,15).or().isNull(User::getEmail));
        return mapper.selectList(userLambdaQueryWrapper);

5.分页查询

 selectPage(P page, @Param("ew") Wrapper<T> queryWrapper);

需要传入Page对象,size为每页的数据量,current为第几页,Page对象是有泛型的,泛型为实体类

  LambdaQueryWrapper<User> userLambdaQueryWrapper = new LambdaQueryWrapper<>();
        userLambdaQueryWrapper.like(User::getName,"q")
                .and(i -> i.ge(User::getAge,1).or().isNotNull(User::getEmail));
        Page<User> userPage = mapper.selectPage(page, userLambdaQueryWrapper);
        ResPageEntity<User> instance = ResPageEntity.instance(userPage);
        return instance;
    }

返回结果
在这里插入图片描述
数据集合在records里面,total代表所有数据个数,size表示当前页数据个数,current代表当前是第几页,pages表示一共有几页
可能会遇到分页查询失效状态,可以在启动类中注入MybatisPlusInterceptor

 @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }

在启动类加上mapper扫描注解

@MapperScan("com.xxx.mapper")

三、UpdateWrapper

将名字中带有q的数据邮箱改为csdn

LambdaUpdateWrapper<User> wrapper = new LambdaUpdateWrapper<>();
        wrapper.like(User::getName,"q").set(User::getEmail,"csdn");
        User user = new User();
        mapper.update(user,wrapper);
注意:里面的实体类一定要创建并且放进去,否则会报错

也可以用下面的这种方法,在更新的时候插入要修改的内容而不是在wrapper里面set,如果不需要在wrapper里面set的话也可以采用QueryWrapper的方式

 UpdateWrapper<User> wrapper = new UpdateWrapper<>();
        wrapper.like("name","q");
        User user = new User();
        user.setEmail("csdn");
        mapper.update(user,wrapper);

总结

通过上述内容,已经可以初步的运用mybatis-plus,可以简化sql的编写,使后端人员更加注重逻辑的编写,自己的学习笔记,如有错误请多指正

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值