Mybatis Plus快速入门
目录
一、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 | |
---|---|---|---|
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快速入门相关推荐
- MyBatis之快速入门
MyBatis之快速入门 2017/9/30 首先我要明确告诉大家的是MyBatis是一个java持久层框架,以前我们都是用jdbc来将我们的java程序与数据库相连接,而MyBatis是对jdbc的 ...
- java day53【 Mybatis框架概述 、 Mybatis 框架快速入门、自定义 Mybatis 框架 】
第1章 框架概述 1.1 什么是框架 1.1.1 什么是框架 框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种 定义认为,框架是可被应用开发者定 ...
- MyBatis框架快速入门
MyBatis框架快速入门 入门案例 创建一个关于Mybatis项目 首先创建一个空项目,然后新建一个moudle,选择quickstart,接下来把模块放到空项目之下.即可 实现mybatis查询数 ...
- MyBatis 01 快速入门
MyBatis 01 快速入门 文章目录 MyBatis 01 快速入门 一.学习目标 二.为什么需要框架技术 三.框架技术介绍 四.主流框架介绍 五.持久化与ORM 六.MyBatis简介 七.搭建 ...
- Mybatis(day1)快速入门
框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法:另一种定义认为,框架是可被应用开发者定制的应用骨架.前者是从应用方面而后者是从目的方面给出的定义. 简 ...
- mybatis的快速入门
说明: 在这个部分,会写个简单的入门案例. 然后,会重新写一个,更加严格的程序案例. 一:案例一 1.最终的目录结构 2.新建一个普通的Java项目,并新建lib 在项目名上右键,不是src. 3.导 ...
- 第一:Java+MyBatis(快速入门)
MyBatis 简介 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为 ...
- springboot 整合mybatis_SpringBoot整合MyBatis框架快速入门
MyBatis概述: mybatis是一个优秀的基于java的持久层框架,它内部封装了jdbc,使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动.创建连接.创建statemenet等繁 ...
- MyBatis:快速入门代码实例(maven代码版)
文章目录 1. MyBatis实例 1.1 添加Mybatis依赖 1.2 创建MyBatis配置文件 1.3.创建po类 1.4.创建映射文件 #{}: 表示sql参数,一个占位符. 1.5.测试 ...
- MyBatis从入门到精通(一)—MyBatis基础知识和快速入门
Mybatis简介 原始jdbc操作(查询数据) Connection connection = null;PreparedStatement preparedStatement = null;Res ...
最新文章
- 自动驾驶安全框架开发进展综述
- Android中shape属性详解
- php 输出去掉 字符,PHP:如何删除字符串中所有不可打印的字符?
- Hystrix 熔断器02 —— hystrix 案例之高并发测试
- c语言文本按行分配数组元素,【转】C语言中动态分配数组
- 10-多写一个@Autowired导致程序崩了
- 设计模式 生成器_生成器设计模式的应用
- Android Jenkins自动化构建之路
- 2023武汉大学计算机考研信息汇总
- el-descriptions的入门学习
- High Scalability创始人Todd Hoff:Facebook网络性能的秘密武器
- php 每日一句名人名言,每日一句名人名言
- Java计算机毕业设计图书馆座位预约管理系统源码+系统+数据库+lw文档
- python 输出第一行1个* 第二行3个* 第三行5个*
- Java Web学习(1)
- 电容基础知识 之 钽电解电容
- matlab运动物体仿真,运动目标跟踪的多模型算法仿真程序
- dedecms织梦后台不显示模块管理和辅助插件
- 现代 Web 开发的现状与未来
- 【SIP协议详解】SIP协议各字段的含义
热门文章
- java高速公路系统_基于jsp的高速公路收费系统-JavaEE实现高速公路收费系统 - java项目源码...
- javaSE基础大全--知识点总结
- 如何在EXCEL里画正态分布图
- MySQL启动常见错误:ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/tmp/mysql.sock‘
- Swift3.0学习笔记-Error Handling
- 前端实现视频录制功能
- 简易md5验证python包md5hash
- Word2007 生成目录英文变成大写的解决办法
- java.lang.UnsatisfiedLinkError解决方法汇集(转载)
- 线性代数Python计算:矩阵对角化