写点什么

[MyBatisPlus]MyBatisPlus 简介、入门案例

作者:fake smile by
  • 2022 年 9 月 16 日
    黑龙江
  • 本文字数:2695 字

    阅读完需:约 9 分钟

MyBatisPlus 入门案例

  • MybatisPlus(简称 MP)是基于 MyBatis 框架基础上开发的增强型工具,旨在简化开发、提供效率。

  • 开发方式

  • 基于 MyBatis 使用 MyBatisPlus

  • 基于 Spring 使用 MyBatisPlus

  • ==基于 SpringBoot 使用 MyBatisPlus==


在这里我们直接使用第三种开发方式。

SpringBoot 整合 MyBatis 回顾

首先我们来复习一下,SpringBoot 整合 Mybatis 的开发过程:


  • 创建 SpringBoot 工程


  • 勾选配置使用的技术,能够实现自动添加起步依赖包


  • 设置 dataSource 相关属性(JDBC 参数)


  • 定义数据层接口映射配置


SpringBoot 整合 MyBatisPlus

我们可以参考着上面的这个实现步骤把 SpringBoot 整合 MyBatisPlus 来快速实现下,具体的实现步骤为:

步骤 1:创建数据库及表

create database if not exists mybatisplus_db character set utf8;use mybatisplus_db;CREATE TABLE user (    id bigint(20) primary key auto_increment,    name varchar(32) not null,    password  varchar(32) not null,    age int(3) not null ,    tel varchar(32) not null);insert into user values(1,'Tom','tom',3,'18866668888');insert into user values(2,'Jerry','jerry',4,'16688886666');insert into user values(3,'Jock','123456',41,'18812345678');insert into user values(4,'传智播客','itcast',15,'4006184000');
复制代码


步骤 2:创建 SpringBoot 工程

步骤 3:勾选配置使用技术


说明:


  • 由于 MP 并未被收录到 idea 的系统内置配置,无法直接选择加入,需要手动在 pom.xml 中配置添加

步骤 4:pom.xml 补全依赖

<dependency>    <groupId>com.baomidou</groupId>    <artifactId>mybatis-plus-boot-starter</artifactId>    <version>3.4.1</version></dependency><dependency>    <groupId>com.alibaba</groupId>    <artifactId>druid</artifactId>    <version>1.1.16</version></dependency>
复制代码


说明:


  • druid 数据源可以加也可以不加,SpringBoot 有内置的数据源,可以配置成使用 Druid 数据源

  • 从 MP 的依赖关系可以看出,通过依赖传递已经将 MyBatis 与 MyBatis 整合 Spring 的 jar 包导入,我们不需要额外在添加 MyBatis 的相关 jar 包


步骤 5:添加 MP 的相关配置信息

resources 默认生成的是 properties 配置文件,可以将其替换成 yml 文件,并在文件中配置数据库连接的相关信息:application.yml


spring:  datasource:    type: com.alibaba.druid.pool.DruidDataSource    driver-class-name: com.mysql.cj.jdbc.Driver    url: jdbc:mysql://localhost:3306/mybatisplus_db?serverTimezone=UTC     username: root    password: root
复制代码


说明:==serverTimezone 是用来设置时区,UTC 是标准时区,和咱们的时间差 8 小时,所以可以将其修改为Asia/Shanghai==

步骤 6:根据数据库表创建实体类

public class User {       private Long id;    private String name;    private String password;    private Integer age;    private String tel;    //setter...getter...toString方法略}
复制代码


注意:==类名与表名要对应!!!====属性名与字段名要对应!!!==

步骤 7:创建 Dao 接口

@Mapperpublic interface UserDao extends BaseMapper<User>{}
复制代码


注意这样就写完了!你后面再测试的时候,会发现有很多直接供我们调用的方法:


步骤 8:编写引导类

@SpringBootApplication//@MapperScan("com.itheima.dao")public class Mybatisplus01QuickstartApplication {    public static void main(String[] args) {        SpringApplication.run(Mybatisplus01QuickstartApplication.class, args);    }
}
复制代码


说明:Dao 接口要想被容器扫描到,有两种解决方案:


  • 方案一:在 Dao 接口上添加@Mapper注解,并且确保 Dao 处在引导类所在包或其子包中

  • 该方案的缺点是需要在每一 Dao 接口中添加注解

  • 方案二:在引导类上添加@MapperScan注解,其属性为所要扫描的 Dao 所在包

  • 该方案的好处是只需要写一次,则指定包下的所有 Dao 接口都能被扫描到,@Mapper就可以不写。

步骤 9:编写测试类

@SpringBootTestclass MpDemoApplicationTests {
@Autowired private UserDao userDao; @Test public void testGetAll() { List<User> userList = userDao.selectList(null); System.out.println(userList); }}
复制代码


说明:==userDao 注入的时候下面有红线提示的原因是什么?==UserDao 是一个接口,不能实例化对象。只有在服务器启动 IOC 容器初始化后,由框架创建 DAO 接口的代理对象来注入。现在服务器并未启动,所以代理对象也未创建,IDEA 查找不到对应的对象注入,所以提示报红。一旦服务启动,就能注入其代理对象,所以该错误提示不影响正常运行。


查看运行结果:



跟之前整合 MyBatis 相比,你会发现我们不需要在 DAO 接口中编写方法和 SQL 语句了,只需要继承BaseMapper接口即可。整体来说简化很多。

MyBatisPlus 简介

MyBatisPlus(简称 MP)是基于 MyBatis 框架基础上开发的增强型工具,旨在==简化开发、提高效率==


通过刚才的案例,相信大家能够体会简化开发和提高效率这两个方面的优点。


MyBatisPlus 的官网为:https://mp.baomidou.com/


如果你去访问试图去访问 https://mybatis.plus,那么可能会失败。因为这个域名是别人捐赠的。


我们非常的推荐 MybatisPlus 的官方文档,它对于新手非常的友好,语言风格诙谐幽默:



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

  • 损耗小:启动即会自动注入基本 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 操作智能分析阻断,也可自定义拦截规则,预防误操作

发布于: 刚刚阅读数: 6
用户头像

fake smile by

关注

还未添加个人签名 2022.07.31 加入

还未添加个人简介

评论

发布
暂无评论
[MyBatisPlus]MyBatisPlus简介、入门案例_Java_fake smile by_InfoQ写作社区