MP1️⃣简介 & 环境搭建
作者:互联网
1、MyBatis Plus
MyBatis-Plus
(简称MP
)
MP
是一个基于 MyBatis
的增强工具,为简化开发、提高效率而生。
2、环境搭建
基于
Spring Boot
开发
示例:User(id, name, password)
- 创建数据库表
- 搭建 Spring Boot 项目
- 配置
- 创建实体类
- 编写 DAO
2.1、数据库表
-
逻辑主键:区分每个数据库记录,无实际意义。
-
业务主键:区分每个业务实体,即通常意义上的用户 ID。
-
用户名、密码
CREATE TABLE `t_user` ( `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '逻辑主键', `user_id` VARCHAR(32) NOT NULL COMMENT '业务主键:用户ID', `name` VARCHAR(16) NOT NULL COMMENT '用户名', `password` VARCHAR(32) NOT NULL COMMENT '密码', PRIMARY KEY (`id`) );
2.2、Spring Boot 项目
若创建失败,修改
service URL
为 Customhttps://start.springboot.io
-
创建项目
-
选择项目存放路径,
Finish
-
导入依赖: MySQL、MyBatis Plus、Druid 数据源、Lombok
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.1</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.2.8</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency>
MP 依赖会自动导入:
MyBatis
、MyBatis整合Spring
Hint:不要手动导入这 2 个依赖,避免(版本)冲突。
2.3、配置
2.3.1、内容
application.yml
-
数据源配置:驱动名,URL,账号密码,连接池类型
-
MP 配置:
-
configuration(在
mybatis
或mybatis-plus
下配置都可)- 命名风格映射:将数据库表的下划线命名风格,映射为 Java 的小驼峰命名风格。
- 日志:便于调试。
-
global-config:数据库配置 - 表前缀(见 2.3.3 说明)。
spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/数据库名?参数 username: 账号 password: 密码 type: com.alibaba.druid.pool.DruidDataSource mybatis-plus: configuration: map-underscore-to-camel-case: true log-impl: org.apache.ibatis.logging.stdout.StdOutImpl global-config: db-config: table-prefix: t_
-
2.3.2、说明
-
MySQL 8+
需要配置时区,两种方式- 追加 URL 属性(serverTimeZone)
- 修改 MySQL 配置文件(my.ini)
-
驱动报错:说明版本不兼容,降低 Spring Boot 版本即可。
-
驱动名
// MySQL 8- com.mysql.jdbc.Driver // MySQL 8+ com.mysql.cj.jdbc.Driver
-
配置表名:
MP
默认将实体类名的首字母小写作为表名,通常数据库表名有自定义前缀。(两种配置方式)
-
全局配置:核心配置类中添加
table-prefix
属性,在首字母小写的基础上添加前缀。mybatis-plus: global-config: db-config: table-prefix: t_
-
个别配置:实体类上添加
@TableName
注解,指定具体表名。@tableName("t_user") public class User { }
-
2.4、实体类
indi/jaywee/entity
ORM 原则:实体类的属性名、类型,对应数据库表(id 是逻辑主键,无需在 entity 呈现)
@Data
// @tableName("t_user")
public class User {
private Long userId;
private String name;
private String password;
}
2.5、DAO
2.5.1、DAO 接口
Hint:继承 BaseMapper<E>,泛型表示要操作的实体。
public interface UserDao extends BaseMapper<User>{
}
不需要编写 Mapper.xml 和 SQL,此时 UserDao 已获得 CRUD 功能。
2.5.2、注册
两种方式
-
在 Dao 接口上添加
@Mapper
注解,前提是 Dao 接口位于 Spring Boot 启动类的同级包或子包下。@Mapper public interface UserDao extends BaseMapper<User>{ }
-
在 Spring Boot 启动类上添加
@MapperScan
注解,指定 Dao 接口所在包(建议)。@SpringBootApplication @MapperScan("indi.jaywee.dao") public class MpApplication { public static void main(String[] args) { SpringApplication.run(MpApplication.class, args); } }
此时 UserDao 已被 Spring 容器托管。
3、说明
经过以上步骤,即完成了基本的环境搭建。
- 继承
BaseMapper<T>
并注册接口,即可获得基础 CRUD 功能。 - 无需编写 Dao 接口方法和 SQL 语句,简化了 MyBatis 开发步骤。
MP 特点
- 无侵入:在 MyBatis 基础上只做增强不做改变,不影响现有工程。
- 损耗小:自动注入基本 CRUD,性能基本无损耗,直接面向对象操作。
- 强大的 CRUD 操作:内置通用 Mapper、通用 Service。通过少量配置实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求。
- 支持 Lambda:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错。
- 支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题
- 支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作
- 支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )
- 内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用
- 内置分页插件:基于 MyBatis 物理分页(
LIMIT
),开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List 查询。 - 分页插件支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多种数据库
- 内置性能分析插件:可输出 SQL 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询
- 内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,也可自定义拦截规则,预防误操作
标签:插件,配置,简介,数据库,MP1,Spring,MyBatis,主键,搭建 来源: https://www.cnblogs.com/secretmrj/p/16297562.html