文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Mybatis-plus的介绍与使用

极客之心

极客之心

2024-12-24 13:37

关注


# ????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实操

## ????数据库相关配置

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


```sql

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)

);

```


插入数据


```sql

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用来简化实体类方法的书写。


```xml

 <!--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文件中配置相关信息


```xml

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 文件夹。


第二步:

接着创建实体类


```java

@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<User> {

}


第四步:

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


```java

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

   }

}

```


上面输出的结果如下:


```java

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时我们进需要调用里面封装的方法即可。


## ????添加数据


```java

@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方法

```java

 @Test

   public void testDelete(){

       int result=userMapper.deleteById(7L);

       System.out.println(result);

   }


```

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


```java

@Test

   public void testDeleteBatchIds(){

       int result=userMapper.deleteBatchIds(Arrays.asList(8L,1548613799622840321L));

       System.out.println(result);

   }

```


## ????修改数据


```java

@Test

   public void updateUser(){

       User user=new User();

       user.setId(8L);

       user.setAge(20);

       int i = userMapper.updateById(user);

       System.out.println(i);

   }

```



## ????查询数据


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

```java

  @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的自动填充,乐观锁,wapper等相关的知识,喜欢的大佬可以多多支持哦????????。

如果有什么疑问的地方请指出,诸佬们一起讨论????????

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯