• Mybatis-plus的介绍与使用


    前言:最近除了在学习公司的业务以外,也在学习和复习一些其他的东西。本篇文章是关于Mybatis-Plus的,抽出时间写下此篇文章希望能加深自己的印象以及帮助到各位小伙伴儿们😉😉。
    最近还会继续更新,如果有什么需要改进的地方,还请大佬不吝赐教🤞🤞
    在这里插入图片描述

    🏠个人主页:小威要向诸佬学习呀
    🧑个人简介:大家好,我是小威,一个想要与大家共同进步的男人😉😉
    目前状况🎉:目前大二,在一家满意的公司实习👏👏

    🎁如果大佬在准备面试,可以使用我找实习前用的刷题神器哦刷题神器点这里哟
    💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,我亲爱的大佬😘

    牛客部分使用反馈,个人感觉还不错,帮我找到了心仪的公司,希望各位伙伴儿们通过它也能提高不少🥂🥂🥂

    以下正文开始

    🍒Mybatis-Plus简介

    在这里插入图片描述

    Mybatis-Plus 是 MyBatis 的一个增强工具,专门针对于传统MyBatis开发中sql需要手动进行映射配置繁琐缺点的一款框架技术,这款框架技术提供了十分丰富的api供开发者们使用,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。MyBatis-Plus 已经为我们封装好了一些 CRUD 方法,因此不需要再写 xml SQL语句 文件了,仅仅通过少量配置即可实现单表大部分的CRUD操作。使用时直接只需要调用这些方法就行。

    🍉Mybatis-Plus特性

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

    在这里插入图片描述

    🍬Mybatis-Plus实操

    🍹数据库相关配置

    首先创建我们的数据库文件

    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)
    );
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    插入数据

    DELETE FROM user;
    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');
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    创建SpringBoot项目,并导入Mybatis-Plus,SQL的依赖,也可以导入Lombok用来简化实体类方法的书写。

      
        <dependency>
            <groupId>com.baomidougroupId>
            <artifactId>mybatis-plus-boot-starterartifactId>
             <version>3.4.2version>
        dependency>
        
        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
        dependency>
        
        <dependency>
            <groupId>org.projectlombokgroupId>
            <artifactId>lombokartifactId>
        dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    在application.properties文件中配置相关信息

    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    spring.datasource.url=jdbc:mysql://localhost:3306user?serverTimezone=GMT%2B8
    spring.datasource.username=root
    spring.datasource.password=123456
    
    # 打印日志信息
    mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述

    🍸小项目运行配置

    第一步:
    数据库相关信息配置完成后,在 Spring Boot 启动类中添加 @MapperScan 注解,将Mapper的包引入启动类(也可以创建一个configuration类当做配置类),扫描 Mapper 文件夹。

    第二步:
    接着创建实体类

    @Data //有了lombok中的@Data注解,不必再写getter,setter,toString等方法
    public class User {
        private Long id;
        private String name;
        private Integer age;
        private String email;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    第三步:

    创建包 mapper 编写Mapper 接口: UserMapper.java,让UserMapper继承BaseMapper即可。

    public interface UserMapper extends BaseMapper {
    }

    第四步:
    以上条件已经具备了小项目的运行,因此在测试类中编写方法运行。

    @RunWith(SpringRunner.class)
    @SpringBootTest
    @MapperScan("package com.mpdemo.mapper")
    public class MybatisPlusApplicationTests {
        @Autowired
        private UserMapper userMapper;
        @Test
        public void testSelectList() {
            //UserMapper 中的 selectList() 方法的参数为 MP 内置的条件封装器 Wrapper
            //在里面需要填选择的限制,不填写就是无任何条件
            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

    上面输出的结果如下:

    User(id=1, name=Jone, age=18, email=test1@baomidou.com)
    User(id=2, name=Jack, age=20, email=test2@baomidou.com)
    User(id=3, name=Tom, age=28, email=test3@baomidou.com)
    User(id=4, name=Sandy, age=21, email=test4@baomidou.com)
    User(id=5, name=Billie, age=24, email=test5@baomidou.com)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    由上文可见,在使用Mybatis时我们需要在XML编写SQL语句,但是在使用Myba-Plus时我们进需要调用里面封装的方法即可。

    🚗添加数据

     @Test
        public void insertUser(){
            System.out.println(("----- insert method test ------"));
            User user=new User();
            user.setName("wangWu");
            user.setId(8L);//实体类中的类型为Long类型,因此需要在后面带上L
            user.setAge(21);
             user.setEmail("wangWU@qq.com");
            int result = userMapper.insert(user);
            System.out.println(result);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    🚕删除数据

    删除单个数据,使用deleteById方法

      @Test
        public void testDelete(){
            int result=userMapper.deleteById(7L);
            System.out.println(result);
        }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    删除多个数据,使用deleteBatchIds方法

     @Test
        public void testDeleteBatchIds(){
            int result=userMapper.deleteBatchIds(Arrays.asList(8L,1548613799622840321L));
            System.out.println(result);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    🚓修改数据

     @Test
        public void updateUser(){
            User user=new User();
            user.setId(8L);
            user.setAge(20);
            int i = userMapper.updateById(user);
            System.out.println(i);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    🚙查询数据

    查询多个数据,使用selectBatchIds方法

       @Test
        public void SelectMore(){
            List<User> users = userMapper.selectBatchIds(Arrays.asList(1L, 2L, 3L));
            System.out.println(users);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    小结

    Mybatis-Plus是Mybatis的加强版,从上文我们也可以看到,Plus方便了我们的开发,不用再去写XML文件,SQL语句,因此还是很值得学习的。另外,在实际项目中的使用中,还要看公司所用的是哪一个哦。
    文章到这里就结束了,下文我们将介绍Mybatis-Plus的自动填充,乐观锁,wapper等相关的知识,喜欢的大佬可以多多支持哦😉😉。
    如果有什么疑问的地方请指出,诸佬们一起讨论🍻🍻
    在这里插入图片描述

    最后再次给大家安利一波牛客,牛客真的很不错的软件,点击刷题神器
    注册牛客,快来和博主一起刷题吧嘿嘿嘿👏

    再次感谢各位小伙伴儿们的支持🤞
    在这里插入图片描述

  • 相关阅读:
    Redis 键过期与内存淘汰
    供应商滥用“云原生”标签,客户表示并不care
    docker本地私有库和harbor仓库
    logcat日志文件分析
    SpringCloud Gateway--Predicate/断言(详细介绍)中
    YOLOv5、YOLOv8改进:Swin Transformer-V2
    尚硅谷笔记——React组件的三大属性props、state、ref
    渗透测试-干货 | 80篇+网络安全面试经验帖(面试篇)
    JAVA:实现AES算法(附完整源码)
    基于nodejs+vue 中小学课程辅导系统
  • 原文地址:https://blog.csdn.net/qq_53847859/article/details/125859722