Mybatis_Plus快速入门

快来打我* 2024-03-30 12:44 93阅读 0赞

目录

  • 一、MyBatisPlus简介
    • 1.简介
    • 2.特性
  • 二、Mybatis_Plus入门
    • 1.创建并初始化数据库
      • 1.1 创建数据库:
      • 1.2 创建 User 表
    • 2.初始化工程
    • 3.添加依赖
      • 3.1 引入依赖
    • 4.配置
    • 5.编写代码
      • 5.1 主类
      • 5.2 实体
      • 5.3 mapper
    • 6.开始使用
    • 7.配置日志
    • 8.MP使用小结

一、MyBatisPlus简介

1.简介

MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

2.特性

  • 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
  • 损耗小:启动即会自动注入基本 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入门

1.创建并初始化数据库

1.1 创建数据库:

mybatis_plus

1.2 创建 User 表

  1. DROP TABLE IF EXISTS user;
  2. CREATE TABLE user
  3. (
  4. id BIGINT(20) NOT NULL COMMENT '主键ID',
  5. name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
  6. age INT(11) NULL DEFAULT NULL COMMENT '年龄',
  7. email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',
  8. PRIMARY KEY (id)
  9. );

其对应的数据库 Data 脚本如下:

  1. DELETE FROM user;
  2. INSERT INTO user (id, name, age, email) VALUES
  3. (1, 'Jone', 18, 'test1@baomidou.com'),
  4. (2, 'Jack', 20, 'test2@baomidou.com'),
  5. (3, 'Tom', 28, 'test3@baomidou.com'),
  6. (4, 'Sandy', 21, 'test4@baomidou.com'),
  7. (5, 'Billie', 24, 'test5@baomidou.com');

2.初始化工程

使用 Spring Initializr 快速初始化一个 Spring Boot 工程
Group:com.donglin
Artifact:mybatis-plus
版本:2.2.1.RELEASE

3.添加依赖

3.1 引入依赖

spring-boot-starter、spring-boot-starter-test
添加:mybatis-plus-boot-starter、MySQL、lombok、
在项目中使用Lombok可以减少很多重复代码的书写。比如说getter/setter/toString等方法的编写

  1. <dependencies>
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter</artifactId>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.springframework.boot</groupId>
  8. <artifactId>spring-boot-starter-test</artifactId>
  9. <scope>test</scope>
  10. </dependency>
  11. <!--mybatis-plus-->
  12. <dependency>
  13. <groupId>com.baomidou</groupId>
  14. <artifactId>mybatis-plus-boot-starter</artifactId>
  15. <version>3.3.1</version>
  16. </dependency>
  17. <!--mysql-->
  18. <dependency>
  19. <groupId>mysql</groupId>
  20. <artifactId>mysql-connector-java</artifactId>
  21. </dependency>
  22. <!--lombok用来简化实体类-->
  23. <dependency>
  24. <groupId>org.projectlombok</groupId>
  25. <artifactId>lombok</artifactId>
  26. </dependency>
  27. </dependencies>

注意:引入 MyBatis-Plus 之后请不要再次引入 MyBatis 以及 MyBatis-Spring,以避免因版本差异导致的问题。

4.配置

在 application.properties 配置文件中添加 MySQL 数据库的相关配置:
mysql5

  1. #mysql数据库连接
  2. spring.datasource.driver-class-name=com.mysql.jdbc.Driver
  3. spring.datasource.url=jdbc:mysql://localhost:3306/mybatis_plus
  4. spring.datasource.username=root
  5. spring.datasource.password=123456

mysql8以上(spring boot 2.1)

  1. spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
  2. spring.datasource.url=jdbc:mysql://localhost:3306/mybatis_plus?serverTimezone=GMT%2B8
  3. spring.datasource.username=root
  4. spring.datasource.password=123456

注意:

  • 1、这里的 url 使用了 ?serverTimezone=GMT%2B8 后缀,因为Spring Boot 2.1 集成了 8.0版本的jdbc驱动,这个版本的 jdbc 驱动需要添加这个后缀,否则运行测试用例报告如下错误:

    java.sql.SQLException: The server time zone value ‘Öйú±ê׼ʱ¼ä’ is unrecognized or represents more

  • 2、这里的 driver-class-name 使用了 com.mysql.cj.jdbc.Driver ,在 jdbc 8 中 建议使用这个驱动,之前的 com.mysql.jdbc.Driver 已经被废弃,否则运行测试用例的时候会有 WARN 信息

5.编写代码

5.1 主类

在 Spring Boot 启动类中添加 @MapperScan 注解,扫描 Mapper 文件夹
注意:扫描的包名根据实际情况修改

  1. @SpringBootApplication
  2. @MapperScan("com.donglin.mybatisplus.mapper")
  3. public class MybatisPlusApplication {
  4. ......
  5. }

5.2 实体

创建包 entity 编写实体类 User.java(此处使用了 Lombok 简化代码)

  1. @Data
  2. public class User {
  3. private Long id;
  4. private String name;
  5. private Integer age;
  6. private String email;
  7. }

5.3 mapper

  1. public interface UserMapper extends BaseMapper<User> {
  2. }

6.开始使用

  1. public class MybatisPlusApplicationTests {
  2. @Autowired
  3. private UserMapper userMapper;
  4. @Test
  5. public void testSelectList() {
  6. System.out.println(("----- selectAll method test ------"));
  7. //UserMapper 中的 selectList() 方法的参数为 MP 内置的条件封装器 Wrapper
  8. //所以不填写就是无任何条件
  9. List<User> users = userMapper.selectList(null);
  10. users.forEach(System.out::println);
  11. }
  12. }

注意:
IDEA在 userMapper 处报错,因为找不到注入的对象,因为类是动态创建的,但是程序可以正确的执行。
为了避免报错,可以在 dao 层 的接口上添加 @Repository 注解
控制台输出:

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

7.配置日志

两种方式
查看sql输出日志

  1. logging:
  2. level:
  3. com.donglin.m1.mapper: debug
  4. mybatis-plus:
  5. configuration:
  6. log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

8.MP使用小结

第一步:创建一个springboot项目,引入依赖信息(mybatis_plus,mysql,lombok)
第二步:配置application.yml:数据库连接信息(mysql8.x serverTimezone=UTC)
第三步:编写业务逻辑类(POJO类,mapper接口 extend BaseMapper< POJO >,主启动类@MapperScan)
第四步:在使用的地方注入Mapper接口的代理类对象,调用里面的方法即可

UTC(Coodinated Universal Time)

发表评论

表情:
评论列表 (有 0 条评论,93人围观)

还没有评论,来说两句吧...

相关阅读

    相关 MybatisPlus入门

    MyBatisPlus简介 1.项目肯定要访问数据操作,并且每个domain都有crud,需多次写重复代码。我们使用MybatisPlus,就不用写重复代码,并且还有模板