一文详解Mybatis-plus的介绍与使用

 更新时间:2022年07月19日 08:44:21   作者:小威要向诸佬学习呀  
Mybatis-Plus 是 MyBatis 的一个增强工具,专门针对于传统MyBatis开发中sql需要手动进行映射配置繁琐缺点的一款框架技术。本文将为大家详细讲讲Mybatis-plus的介绍与使用,感兴趣的可以了解一下

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)
);

插入数据

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');

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

  <!--mybatis-plus的依赖-->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
         <version>3.4.2</version>
    </dependency>
    <!--mysql的依赖-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
    <!--lombok用来简化实体类-->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>

在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

小项目运行配置

第一步:

数据库相关信息配置完成后,在 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;
}

第三步:

创建包 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);
    }
}

上面输出的结果如下:

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)

由上文可见,在使用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);
    }

删除数据

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

  @Test
    public void testDelete(){
        int result=userMapper.deleteById(7L);
        System.out.println(result);
    }

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

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

修改数据

 @Test
    public void updateUser(){
        User user=new User();
        user.setId(8L);
        user.setAge(20);
        int i = userMapper.updateById(user);
        System.out.println(i);
    }

查询数据

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

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

小结

Mybatis-Plus是Mybatis的加强版,从上文我们也可以看到,Plus方便了我们的开发,不用再去写XML文件,SQL语句,因此还是很值得学习的。另外,在实际项目中的使用中,还要看公司所用的是哪一个哦。

以上就是一文详解Mybatis-plus的介绍与使用的详细内容,更多关于Mybatis-plus使用的资料请关注脚本之家其它相关文章!

相关文章

  • Java中Servlet的生命周期详解

    Java中Servlet的生命周期详解

    这篇文章主要介绍了Java中Servlet的生命周期详解,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • 使用springboot整合websocket实现群聊教程

    使用springboot整合websocket实现群聊教程

    websocket怎么说呢,就是服务器可以主动向客户端发起对话,下面就是springboot整合websocket实现群聊的操作代码,一起来看一下get新技能吧
    2021-08-08
  • Spring Cloud Alibaba Nacos Config配置中心实现

    Spring Cloud Alibaba Nacos Config配置中心实现

    这篇文章主要介绍了Spring Cloud Alibaba Nacos Config配置中心实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • mybatisplus驼峰命名映射的问题解决

    mybatisplus驼峰命名映射的问题解决

    本文主要介绍了mybatisplus驼峰命名映射的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • Spring AbstractRoutingDatasource 动态数据源的实例讲解

    Spring AbstractRoutingDatasource 动态数据源的实例讲解

    本文介绍如何使用 Spring AbstractRoutingDatasource 基于上下文动态切换数据源,因此我们会让查找数据源逻辑独立于数据访问之外
    2021-07-07
  • 解决Java包装类比较时遇到的问题

    解决Java包装类比较时遇到的问题

    所谓包装类的作用就是将原始数据类型转换成引用数据类型,下面这篇文章主要给大家介绍了关于在Java包装类比较时遇到的问题的解决方法,文中给出了详细的示例代码,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-09-09
  • java实战案例之用户注册并发送邮件激活/发送邮件验证码

    java实战案例之用户注册并发送邮件激活/发送邮件验证码

    现在很多的网站都提供有用户注册功能,当我们注册成功之后就会收到封注册网站的邮件,邮件里包含了我们的注册的用户名和密码及激活账户的超链接等信息,这篇文章主要给大家介绍了关于java实战案例之用户注册并发送邮件激活/发送邮件验证码的相关资料,需要的朋友可以参考下
    2021-09-09
  • Java后台返回和处理JSon数据的方法步骤

    Java后台返回和处理JSon数据的方法步骤

    这篇文章主要介绍了Java后台返回和处理JSon数据的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • Java实现简易图书借阅系统

    Java实现简易图书借阅系统

    这篇文章主要为大家详细介绍了Java实现简易图书借阅系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • SpringBoot全局Controller返回值格式统一

    SpringBoot全局Controller返回值格式统一

    本文主要介绍了SpringBoot全局Controller返回值格式统一,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07

最新评论