MyBatisPlus入门到精通-1

MyBatisPlus(简称MP)
这篇博客主要讲解用MyBatisPlus进行三层架构中Dao层的开发
以这个为目的来进行我们的学习
我们会先通过一个概述和入门案例进行快速上手
之后我们再通过对我们原先的案列的问题进行分析
来进一步了解MP操作数据库的知识

快速入门

MP简介

MP是国人开发的插件,so他那个官网不是有点像拼音,他就是拼音
baomidou
他是在mybatis基础上做增强
不影响你原来mybatis使用,一下特殊需求肯定还是要我们用mybatis做自己实现的
MyBatisPlus入门到精通-1_第1张图片
MyBatisPlus入门到精通-1_第2张图片

案例

基于SpringBoot进行开发
MyBatisPlus入门到精通-1_第3张图片
就大致两件事
创建工程以及对应实体类
导入配置文件后,将对应的实体类和我们的配置进来的jar包新技术结合一下(其实是先导入依赖,然后直接写集合后的类)
1.创建工程
这里我们只练习MP,so不导入Web
MyBatisPlus入门到精通-1_第4张图片

这个创建的依赖项是没有MP选项的,我们需要后期手动加
这里就Mysql和Lombok即可
MyBatisPlus入门到精通-1_第5张图片
2.写入对应的依赖
德鲁伊连接池的和mybatisplus的起步依赖
注意:利用maven的多重继承,MP依赖下面有一个mybatis的依赖(我们就不需要导入了),所以是是依赖着mybatis开发的,仔细看还能看见JDBC(本来JDBC就是最底层)
MyBatisPlus入门到精通-1_第6张图片

  
        <dependency>
            <groupId>com.baomidougroupId>
            <artifactId>mybatis-plus-boot-starterartifactId>
            <version>3.4.1version>
        dependency>
        
        <dependency>
            <groupId>com.alibabagroupId>
            <artifactId>druid-spring-boot-starterartifactId>
            <version>1.2.8version>
        dependency>

3.写SpringBoot的配置文件和类
配置文件改成yml文件
MyBatisPlus入门到精通-1_第7张图片

代码格式是固定的,自己搜搜,然后改成自己得的信息

spring:
  datasource:
    druid:
      driver-class-name: com.mysql.cj.jdbc.Driver   # mysql 驱动
      url: jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf8&serverTimezone=UTC  # 连接数据库
      username: root    # 数据库账户
      password: 123456    # 数据库密码

实体类
MyBatisPlus入门到精通-1_第8张图片
对应的表
MyBatisPlus入门到精通-1_第9张图片
important point
看我们这里的接口定义
我们直接继承BaseMapper然后泛型写上我们的实体类
然后就不用做了,他会自动帮我们配置对应的有一些比较简答的方法
之前mybatis是需要你写方法和语句的,而这个有一些已经配置好的
MyBatisPlus入门到精通-1_第10张图片
4.测试
可以发现计算我们没有写,他也是有一些方法的
MyBatisPlus入门到精通-1_第11张图片
芜湖,成功输出我们的数据
MyBatisPlus入门到精通-1_第12张图片
就这样其实挺简单的一个入门程序

MP提供的功能

一些标准功能

CRUD

这是对于的实验mybatis和MP的方法对应
MP实现了我们对于表的基本CRUD功能
这些功能就不用自己定义了
MyBatisPlus入门到精通-1_第13张图片
那我们来测测呗
1.insert
返回的应该是变动的数据条数
数据库成功变化
忘了设置gender了,等会改一下
MyBatisPlus入门到精通-1_第14张图片
MyBatisPlus入门到精通-1_第15张图片
值得注意的就是我没有设置ID1的话,他会操作,但是不是因为没有ID,而是因为太大了超出了Integer的范围,我们给换成Long,再把Mysql表里的换成bigint即可添加成功
MyBatisPlus入门到精通-1_第16张图片
但你会发现这个ID还不是自增长的,它本身内部有一个算法,等会我们讲解一下
MyBatisPlus入门到精通-1_第17张图片
测试删除
代码

@Test
    void delete(){
        int i = userDao.deleteById(Long.valueOf("1684490505905733633"));
        System.out.println(i);
    }

测试结果
同样返回的是修改的条数
MyBatisPlus入门到精通-1_第18张图片
3.测试修改

    @Test
    void update(){
        User user = new User();
        user.setId(7L);//数据后加L代表Long类型!!!
        user.setGender((short)1);
        userDao.updateById(user);
    }

修改成功
MyBatisPlus入门到精通-1_第19张图片
但是想想我们之前做修改是很麻烦的
还要判断什么是不是null,是null的话不进行替换,不是的话进行替换
他都给设置好了,没值就不会修改对应项
对应的select上面也也有
selectById我有也就不演示了

那这些功能怎么来的呢?
答案显而易见,继承来的
继承我们BaseMapper的类实现的功能
MyBatisPlus入门到精通-1_第20张图片

分页查询功能(带Mp分页拦截器)

MP里是有这个功能的,对应的方法的效果如图

@Test
    void PageSelect(){
        IPage<User> page = new Page<>(1,2);
        IPage<User> page1 = userDao.selectPage(page, null);
        System.out.println("当前页码"+page1.getCurrent());
        System.out.println("每页显示数"+page1.getSize());
        System.out.println("一共多少页"+page1.getPages());
        System.out.println("一共多少条"+page1.getTotal());
        System.out.println("真正的数据"+page1.getRecords());

    }

但是运行出来的结果,还是查询全部的数据,而且对应页数和条数为0
想想select分页查询,其实也就是在select * from user 后加上
limit 第几条数据开始,一个查询的数据条数
我们MP底层是用拦截器来做的,拦截并增强(AOP)
so需要配置拦截器开启MP提供的分页拦截器
MyBatisPlus入门到精通-1_第21张图片
mpInterceptor拦截器
我们定义一个拦截器
bean注释,可以用@import不过我这里直接配置类了

public class MpConfig {
  @Bean
  @Configuration
  public MybatisPlusInterceptor mpInterceptor(){
      //1.定义Mp拦截器
      MybatisPlusInterceptor mpInterceptor = new MybatisPlusInterceptor();
      //2.添加具体的拦截器
      mpInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
      return mpInterceptor;
  }
}

MyBatisPlus入门到精通-1_第22张图片
现在就能正常查询了

MyBatisPlus入门到精通-1_第23张图片
分页底层
我们就看一看他的sql语句呗
从日志看,需要吧Mp运行日志配上
MyBatisPlus入门到精通-1_第24张图片
然后输出的日志
也是哪个预编译参数的由于我们写的页数是1条数是3,1对应就是从头开始呗
所以那个从头开始不用写就直接写查询多少条数据即可
MyBatisPlus入门到精通-1_第25张图片
如果是2,3,查询第二页,每页三行
他就会自己做一个计算
每页三行从第二页开始,起始条数就是(page-1)*页数
查询数据数还是没有多少条数据
so传参就是3,3
他底层都弄好了!

MyBatisPlus入门到精通-1_第26张图片

分页小结

MyBatisPlus入门到精通-1_第27张图片

MyBatisPlus入门到精通-1_第28张图片
需要的话可以开启Mp的日志
MyBatisPlus入门到精通-1_第29张图片

你可能感兴趣的:(Mybatis,JavaWeb,java,sql,mybatis)