目录

一、Mybatis Plus的基本使用

1. 什么是mybatis-plus

2、mybatis-plus特性

支持数据库

3、框架结构

二、Mybatis Plus的基本代码操作

1、新建springboot项目

2、创建数据库 mybatis_plus

3、 导入相应的pom依赖

4、配置

5、编写实体类 User.java(此处使用了 Lombok 简化代码)

6、编写Mapper类 UserMapper.java

7、在启动类加上注解扫描mapper


一、Mybatis Plus的基本使用

1. 什么是mybatis-plus

升级版的mybatis,目的是让mybatis更易于使用, 用官方的话说“为简化而生”  

官网:MyBatis-Plus

2、mybatis-plus特性

无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
损耗小:启动即会自动注入基本 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 操作智能分析阻断,也可自定义拦截规则,预防误操作

支持数据库

  • mysql 、 mariadb 、 oracle 、 db2 、 h2 、 hsql 、 sqlite 、 postgresql 、 sqlserver
  • 达梦数据库 、 虚谷数据库 、 人大金仓数据库

3、框架结构

二、Mybatis Plus的基本代码操作

1、新建springboot项目

2、创建数据库 mybatis_plus

现有一张 User 表,其表结构如下:

id name age email
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

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

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)
);
-- 真实开发中,version(乐观锁),deleted(逻辑删除)、gmt_create、gem_mo

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

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

3、 导入相应的pom依赖

<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.1</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 --><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.2</version></dependency><!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui --><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>2.9.2</version></dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-freemarker</artifactId></dependency>

4、配置

在 application.yml 配置文件中添加 H2 数据库的相关配置:

server:port: 8080
spring:application:name: plusdatasource:username: rootpassword: 123456driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/aaa?userSSL=false&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&allowPublicKeyRetrieval=true
logging:level: com.example.plus.mapper: debug  

5、编写实体类 User.java(此处使用了 Lombok 简化代码)

​ pojo–>dao–>(连接mybatis,配置mapper.xml文件)–>service-controller (传统方式 )

package com.zxy.plus.pojo;import lombok.Data;@Data
public class User {private Long id;private String name;private Integer age;private String email;
}

6、编写Mapper类 UserMapper.java

注意继承的是BaseMapper

package com.zxy.plus.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zxy.plus.pojo.User;
import org.springframework.stereotype.Repository;@Repository
public interface UserMapper extends BaseMapper<User> {//所有的CRUD已经编写完成//不需要像以前的配置一些xml}

7、在启动类加上注解扫描mapper

在 Spring Boot 启动类中添加 @MapperScan 注解,扫描 Mapper 文件夹:

@SpringBootApplication
@MapperScan("com.zxy.plus.mapper")//扫描mapper文件夹
public class Application {public static void main(String[] args) {SpringApplication.run(QuickStartApplication.class, args);}}

三、Java8代码解析

1、代码生成器(新)

mybatis plus生成配置文件

①、导入依赖

当前包未传递依赖 MP 包,需要自己引入!

<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.5.2</version>
</dependency>

②、新建自动生成器MysqlGenerator

package com.zxy.plus.generator;import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import com.baomidou.mybatisplus.generator.fill.Column;
import lombok.extern.slf4j.Slf4j;import java.util.Arrays;
import java.util.Collections;
import java.util.List;@Slf4j
public class MysqlGenerator {/*** 数据源配置(修改成MySQL)*/protected static String URL = "jdbc:mysql://localhost:3306/aaa?userSSL=false&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&allowPublicKeyRetrieval=true";protected static String USERNAME = "root";protected static String PASSWORD = "123456";protected static DataSourceConfig.Builder DATA_SOURCE_CONFIG = new DataSourceConfig.Builder(URL, USERNAME, PASSWORD);// 处理 all 情况/*** 交互式的生成器(all)* @param tables* @return*/protected static List<String> getTables(String tables) {return "all".equals(tables) ? Collections.emptyList() : Arrays.asList(tables.split(","));}public static void main(String[] args) {FastAutoGenerator.create(DATA_SOURCE_CONFIG)
//                全局配置.globalConfig((scanner,builder) ->
//                    builder就是globalConfig的构建器builder.fileOverride() //覆盖已生成文件.outputDir(System.getProperty("user.dir")+"\\src\\main\\java").author(scanner.apply("请输入你的用户名")).enableSwagger().commentDate("yyyy-MM-dd").build() //构建器开始工作)
//                包配置.packageConfig(builder-> {builder.parent("com.lv.plus").entity("pojo").service("service").serviceImpl("service.impl").mapper("mapper").xml("mapper.xml").controller("controller").pathInfo(Collections.singletonMap(OutputFile.xml, System.getProperty("user.dir") + "\\src\\main\\resources\\mapper")).build();})
//                注入配置.injectionConfig((builder) ->builder.beforeOutputFile((a, b) -> log.warn("tableInfo: " + a.getEntityName())))
//                策略配置.strategyConfig((scanner, builder) ->builder.addInclude(getTables(scanner.apply("请输入表名,多个英文逗号分隔?所有输入 all"))).addTablePrefix("tb_").entityBuilder().enableChainModel().enableLombok().enableTableFieldAnnotation().addTableFills(new Column("create_time", FieldFill.INSERT)).controllerBuilder().enableRestStyle().enableHyphenStyle().build()).templateEngine(new FreemarkerTemplateEngine()).execute();}}

基础配置:

属性 说明 示例
url jdbc路径 jdbc:mysql://127.0.0.1:3306/mybatis-plus
username 数据库账号 root
password 数据库密码 123456

可选配置 :

方法 说明 示例
dbQuery(IDbQuery) 数据库查询 new MySqlQuery()
schema(String) 数据库schema(部分数据库适用) mybatis-plus
typeConvert(ITypeConvert) 数据库类型转换器 new MySqlITypeConvert
keyWordHandle(IkeyWordsHandler) 数据库关键字处理器 new MySqlIkeyWordsHandler

全局配置(GlobalConfig):

 包配置(PackageConfig):

模板配置(TemplateConfig):

注入配置(InjectionConfig):

策略配置(StrategyConfig): 

 运行:

生成文件:

Mybatis Plus快速入门相关推荐

  1. MyBatis之快速入门

    MyBatis之快速入门 2017/9/30 首先我要明确告诉大家的是MyBatis是一个java持久层框架,以前我们都是用jdbc来将我们的java程序与数据库相连接,而MyBatis是对jdbc的 ...

  2. java day53【 Mybatis框架概述 、 Mybatis 框架快速入门、自定义 Mybatis 框架 】

    第1章 框架概述 1.1 什么是框架 1.1.1 什么是框架 框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种 定义认为,框架是可被应用开发者定 ...

  3. MyBatis框架快速入门

    MyBatis框架快速入门 入门案例 创建一个关于Mybatis项目 首先创建一个空项目,然后新建一个moudle,选择quickstart,接下来把模块放到空项目之下.即可 实现mybatis查询数 ...

  4. MyBatis 01 快速入门

    MyBatis 01 快速入门 文章目录 MyBatis 01 快速入门 一.学习目标 二.为什么需要框架技术 三.框架技术介绍 四.主流框架介绍 五.持久化与ORM 六.MyBatis简介 七.搭建 ...

  5. Mybatis(day1)快速入门

    框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法:另一种定义认为,框架是可被应用开发者定制的应用骨架.前者是从应用方面而后者是从目的方面给出的定义. 简 ...

  6. mybatis的快速入门

    说明: 在这个部分,会写个简单的入门案例. 然后,会重新写一个,更加严格的程序案例. 一:案例一 1.最终的目录结构 2.新建一个普通的Java项目,并新建lib 在项目名上右键,不是src. 3.导 ...

  7. 第一:Java+MyBatis(快速入门)

    MyBatis 简介 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为 ...

  8. springboot 整合mybatis_SpringBoot整合MyBatis框架快速入门

    MyBatis概述: mybatis是一个优秀的基于java的持久层框架,它内部封装了jdbc,使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动.创建连接.创建statemenet等繁 ...

  9. MyBatis:快速入门代码实例(maven代码版)

    文章目录 1. MyBatis实例 1.1 添加Mybatis依赖 1.2 创建MyBatis配置文件 1.3.创建po类 1.4.创建映射文件 #{}: 表示sql参数,一个占位符. 1.5.测试 ...

  10. MyBatis从入门到精通(一)—MyBatis基础知识和快速入门

    Mybatis简介 原始jdbc操作(查询数据) Connection connection = null;PreparedStatement preparedStatement = null;Res ...

最新文章

  1. 自动驾驶安全框架开发进展综述
  2. Android中shape属性详解
  3. php 输出去掉 字符,PHP:如何删除字符串中所有不可打印的字符?
  4. Hystrix 熔断器02 —— hystrix 案例之高并发测试
  5. c语言文本按行分配数组元素,【转】C语言中动态分配数组
  6. 10-多写一个@Autowired导致程序崩了
  7. 设计模式 生成器_生成器设计模式的应用
  8. Android Jenkins自动化构建之路
  9. 2023武汉大学计算机考研信息汇总
  10. el-descriptions的入门学习
  11. High Scalability创始人Todd Hoff:Facebook网络性能的秘密武器
  12. php 每日一句名人名言,每日一句名人名言
  13. Java计算机毕业设计图书馆座位预约管理系统源码+系统+数据库+lw文档
  14. python 输出第一行1个* 第二行3个* 第三行5个*
  15. Java Web学习(1)
  16. 电容基础知识 之 钽电解电容
  17. matlab运动物体仿真,运动目标跟踪的多模型算法仿真程序
  18. dedecms织梦后台不显示模块管理和辅助插件
  19. 现代 Web 开发的现状与未来
  20. 【SIP协议详解】SIP协议各字段的含义

热门文章

  1. java高速公路系统_基于jsp的高速公路收费系统-JavaEE实现高速公路收费系统 - java项目源码...
  2. javaSE基础大全--知识点总结
  3. 如何在EXCEL里画正态分布图
  4. MySQL启动常见错误:ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/tmp/mysql.sock‘
  5. Swift3.0学习笔记-Error Handling
  6. 前端实现视频录制功能
  7. 简易md5验证python包md5hash
  8. Word2007 生成目录英文变成大写的解决办法
  9. java.lang.UnsatisfiedLinkError解决方法汇集(转载)
  10. 线性代数Python计算:矩阵对角化