IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    MyBatis-Plus 基础入门教程(一)

    JayHrn发表于 2023-12-19 09:35:28
    love 0

    如下教程学习自尚硅谷杨博超老师的MyBatis-Plus教程

    简介

    MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

    我们的愿景是成为 MyBatis 最好的搭档,就像 魂斗罗 中的 1P、2P,基友搭配,效率翻倍。

    与MyBatis的关系

    特性

    • 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
    • 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作
    • 强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求
    • 支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错
    • 支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题
    • 支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作
    • 支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )
    • 内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用
    • 内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List 查询
    • 分页插件支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多种数据库
    • 内置性能分析插件:可输出 SQL 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询
    • 内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,也可自定义拦截规则,预防误操作

    支持数据库

    任何能使用 MyBatis 进行 CRUD, 并且支持标准 SQL 的数据库,具体支持情况如下,如果不在下列表查看分页部分教程 PR 您的支持。

    • MySQL,Oracle,DB2,H2,HSQL,SQLite,PostgreSQL,SQLServer,Phoenix,Gauss ,ClickHouse,Sybase,OceanBase,Firebird,Cubrid,Goldilocks,csiidb
    • 达梦数据库,虚谷数据库,人大金仓数据库,南大通用(华库)数据库,南大通用数据库,神通数据库,瀚高数据库

    框架结构

    framework

    官方地址

    官方网站:https://baomidou.com/

    官方文档:https://baomidou.com/pages/24112f/

    入门案例

    1.开发环境

    • IDE:IDEA 2019.3.5
    • JDK:JDK8+
    • 构建工具:Maven 3.5.4
    • MySQL:MySQL 8.0.24
    • Navicat:Navicat Premium 15
    • Spring Boot:2.6.7
    • MyBatis-Plus:3.5.1

    2.建库建表

    • 打开Navicat运行以下SQL脚本进行建库建表

      1
      2
      3
      4
      5
      6
      7
      8
      9
      CREATE DATABASE `mybatis_plus` /*!40100 DEFAULT CHARACTER SET utf8mb4 */; 
      use `mybatis_plus`;
      CREATE TABLE `user` (
      `id` bigint(20) NOT NULL COMMENT '主键ID',
      `name` varchar(30) DEFAULT NULL COMMENT '姓名',
      `age` int(11) DEFAULT NULL COMMENT '年龄',
      `email` varchar(50) DEFAULT NULL COMMENT '邮箱',
      PRIMARY KEY (`id`)
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    • 插入几条测试数据

      1
      2
      3
      4
      5
      6
      INSERT INTO user (id, name, age, email) VALUES 
      (1, 'Jone', 18, 'test1@baomidou.com'),
      (2, 'Jack', 20, 'test2@baomidou.com'),
      (3, 'Tom', 28, 'test3@baomidou.com'),
      (4, 'Sandy', 21, 'test4@baomidou.com'),
      (5, 'Billie', 24, 'test5@baomidou.com');

    3.创建工程

    • 使用Spring Initializer快速初始化一个 Spring Boot 工程

      步骤一

      步骤二

      步骤三

      步骤四

    • 引入MyBatis-Plus的依赖

      1
      2
      3
      4
      5
      <dependency>
      <groupId>com.baomidou</groupId>
      <artifactId>mybatis-plus-boot-starter</artifactId>
      <version>3.5.1</version>
      </dependency>
    • 安装Lombok插件

      Lombok插件

    4.配置编码

    • 配置application.yml文件

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      #配置端口
      server:
      port: 80

      spring:
      #配置数据源
      datasource:
      #配置数据源类型
      type: com.zaxxer.hikari.HikariDataSource
      #配置连接数据库的信息
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://localhost:3306/mybatis_plus?characterEncoding=utf-8&useSSL=false
      username: {username}
      password: {password}

      #MyBatis-Plus相关配置
      mybatis-plus:
      configuration:
      #配置日志
      log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    • 在 Spring Boot 启动类中添加 @MapperScan 注解,扫描 Mapper 文件夹

      1
      2
      3
      4
      5
      6
      7
      @SpringBootApplication
      @MapperScan("指定Mapper接口所在的包")
      public class MybatisPlusDemoApplication {
      public static void main(String[] args) {
      SpringApplication.run(MybatisPlusDemoApplication.class, args);
      }
      }
    • 编写实体类 User.java(此处使用了 Lombok 简化代码)

      1
      2
      3
      4
      5
      6
      7
      @Data
      public class User {
      private Long id;
      private String name;
      private Integer age;
      private String email;
      }
    • 编写 Mapper 包下的 UserMapper接口

      1
      public interface UserMapper extends BaseMapper<User> {}

    5.测试查询

    • 编写一个测试类MyBatisPlusTest.java

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      @SpringBootTest
      public class MyBatisPlusTest {
      @Resource
      private UserMapper userMapper;

      /**
      * 测试查询所有数据
      */
      @Test
      void testSelectList(){
      //通过条件构造器查询一个list集合,若没有条件,则可以设置null为参数
      List<User> users = userMapper.selectList(null);
      users.forEach(System.out::println);
      }
      }
    • 控制台打印查询结果

      打印结果



沪ICP备19023445号-2号
友情链接