• 引入MybatisPlus与实操


    1. MybatisPlus概述

    特色

    image-20221109103257660

    特性

    • 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑

    • 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作, BaseMapper

    • 强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分CRUD 操作,更有强大的条件构造器,满足各类使用需求, 以后简单的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 操作智能分析阻断,也可自定义拦截规则,预防误操作

    有没有被强大的功能震撼到~~~~

    2. 快速入门

    • 使用第三方组件:
      1、导入对应的依赖
      2、研究依赖如何配置
      3、代码如何编写
      4、提高扩展技术能力!

    2.1 步骤

    1、创建数据库 mybatis_plus

    2、创建user表

    DROP TABLE IF EXISTS user;
    CREATE TABLE user
    (
    id BIGINT(20) NOT NULL COMMENT '主键ID',
    name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
    age INT(11) NULL DEFAULT NULL COMMENT '年龄',
    email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',
    PRIMARY KEY (id)
    );
    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');
    -- 真实开发中,version(乐观锁)、deleted(逻辑删除)、gmt_create、gmt_modified
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    3、编写项目,初始化项目!使用SpringBoot初始化!

    4、导入依赖

    
    <dependency>
      <groupId>mysqlgroupId>
      <artifactId>mysql-connector-javaartifactId>
    dependency>
    
    <dependency>
      <groupId>org.projectlombokgroupId>
      <artifactId>lombokartifactId>
    dependency>
    
    
    <dependency>
      <groupId>com.baomidougroupId>
      <artifactId>mybatis-plus-boot-starterartifactId>
      <version>3.0.5version>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 说明:我们使用 mybatis-plus 可以节省我们大量的代码,尽量不要同时导入 mybatis 和 mybatis-plus!版本的差异!

    5、连接数据库!这一步和 mybatis 相同!

    # mysql 5 驱动不同 com.mysql.jdbc.Driver
    # mysql 8 驱动不同com.mysql.cj.jdbc.Driver、需要增加时区的配置
    serverTimezone=GMT%2B8
    spring.datasource.username=root
    spring.datasource.password=123456
    spring.datasource.url=jdbc:mysql://localhost:3306/mybatis_plus?
    useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    6、传统方式pojo-dao(连接mybatis,配置mapper.xml文件)-service-controller

    • 使用了mybatis-plus 之后
    • pojo
    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public class User {
      private Long id;
      private String name;
      private Integer age;
      private String email;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • mapper接口
    package com.kuang.mapper;
    import com.baomidou.mybatisplus.core.mapper.BaseMapper;
    import com.kuang.pojo.User;
    import org.springframework.stereotype.Repository;
    // 在对应的Mapper上面继承基本的类 BaseMapper
    @Repository // 代表持久层
    public interface UserMapper extends BaseMapper<User> {
      // 所有的CRUD操作都已经编写完成了
      // 你不需要像以前的配置一大堆文件了!
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 注意点,我们需要在主启动类上去扫描我们的mapper包下的所有接口
    @MapperScan("com.kuang.mapper")
    
    • 1
    • 测试类中测试
    @SpringBootTest
    class MybatisPlusApplicationTests {
      // 继承了BaseMapper,所有的方法都来自己父类
      // 我们也可以编写自己的扩展方法!
      @Autowired
      private UserMapper userMapper;
      @Test
      void contextLoads() {
        // 参数是一个 Wrapper ,条件构造器,这里我们先不用 null
        // 查询全部用户
        List<User> users = userMapper.selectList(null);
        users.forEach(System.out::println);
     }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 结果

      image-20221109104435248

    3. 配置日志

    我们所有的sql现在是不可见的,我们希望知道它是怎么执行的,所以我们必须要看日志!

    # 配置日志
    mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
    
    • 1
    • 2

    image-20221109104547031

    配置完毕日志之后,后面的学习就需要注意这个自动生成的SQL,你们就会喜欢上 MyBatis-Plus!

    💖💖💖 完结撒花

    💖💖💖 如果命运是世上最烂的编剧。 那么你就要争取,做你人生最好的演员

    💖💖💖 写作不易,如果您觉得写的不错,欢迎给博主点赞、收藏、评论来一波~让博主更有动力吧

  • 相关阅读:
    面试求职-面试注意事项
    一文看懂推荐系统:召回03:基于用户的协同过滤(UserCF),要计算用户之间的相似度
    Web前端:2022年Web开发者的五大CSS工具
    风电厂VR情景式三维模拟实训系统让教育更加贴近实际
    python3 解析json文件,python循环读取目录文件
    如何实现在Odoo日历视图中批量添加多个日程?
    阿里面试官惊了,Nginx配置一键生成
    Sentinel-2波段合成
    【GIS面试】GIS算法介绍
    C语言程序设计教程(第三版)李凤霞 第十一章课后习题答案
  • 原文地址:https://blog.csdn.net/qq_41239465/article/details/127764861