Spring Boot环境下Mybatis Plus的快速应用操作

作者:apicescn 时间:2023-04-08 13:27:33 

一、简介

Mybatis-Plus(简称MP)是一个 Mybatis 的一个增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。其愿景是成为Mybatis最好的搭档,将开发效率翻倍,由于受到学习研究深入限制,本例只进行Mybatis Plus在Spring Boot环境下的基本应用(如Select、Insert、Update、Delete等基本操作,其中还包括动态生成组合查询与更新的动态SQL语句)。

特性:

无侵入:Mybatis-Plus 在 Mybatis 的基础上进行扩展,只做增强不做改变,引入 Mybatis-Plus 不会对您现有的 Mybatis 构架产生任何影响,而且 MP 支持所有 Mybatis 原生的特性。

依赖少:仅仅依赖 Mybatis 以及 Mybatis-Spring

损耗小:启动即会自动注入基本CURD,性能基本无损耗,直接面向对象操作。

预防Sql注入:内置Sql注入剥离器,有效预防Sql注入攻击。

通用CRUD操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求。

多种主键策略:支持多达4种主键策略(内含分布式唯一ID生成器),可自由配置,完美解决主键问题。

支持ActiveRecord:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可实现基本 CRUD 操作。

支持代码生成:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用(P.S. 比 Mybatis 官方的 Generator 更加强大!)。

支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )。

支持关键词自动转义:支持数据库关键词(order、key……)自动转义,还可自定义关键词。

内置分页插件:基于Mybatis物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通List查询。

内置性能分析插件:可输出Sql语句以及其执行时间,建议开发测试时启用该功能,能有效解决慢查询。

内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,预防误操作。

二、快速入门开发

1、依赖配置(Spring Boot方式)

pom.xml引入MyBatis依赖类


<!--mybatis plus-->
 <dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>mybatisplus-spring-boot-starter</artifactId>
  <version>1.0.5</version>
 </dependency>
 <dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>mybatis-plus</artifactId>
  <version>2.1.9</version>
 </dependency>

application.yaml配置内容如下:


#mybatis plus配置

mybatis-plus:
#由于本例中采用注解方式编写sql,故而此处可不配置
#mapper-locations: classpath:/mapper/*Mapper.xml
#实体扫描,多个package用逗号或者分号分隔
typeAliasesPackage: com.szss.admin.model
#枚举扫描配置(本示例未使用到)
#typeEnumsPackage: com.szss.admin.model.domain
global-config:
#主键类型 0:"数据库ID自增", 1:"用户输入ID",2:"全局唯一ID (数字类型唯一ID)", 3:"UUID";
id-type: 0
#字段策略 0:"忽略判断",1:"非 NULL 判断"),2:"非空判断"
field-strategy: 2
#驼峰下划线转换
db-column-underline: true
#刷新mapper 调试神器(由于本例中采用注解方式编写sql,故而不需要刷新mapper.xml文件)
#refresh-mapper: true
#数据库大写下划线转换
capital-mode: true
#序列接口实现类配置,在新的mybatis-plus-boot-starter中不推荐此方式进行配置,推荐自定义bean注入
key-generator: com.baomidou.mybatisplus.incrementer.H2KeyGenerator
#逻辑删除配置(下面3个配置)
logic-delete-value: 1
logic-not-delete-value: 0
sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector
# SQL 解析缓存,开启后多租户 @SqlParser 注解生效
sql-parser-cache: true
configuration:
map-underscore-to-camel-case: true
cache-enabled: false

这样我们就完成了MyBatis Plus基本快速开发配置,接下来我们看看具体如何快速进行开发。

2、简单示例

假设我们已存在一张 Role 表,且已有对应的实体类 Role,实现 Role 表的 CRUD 操作我们需要做什么呢?


import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.szss.admin.model.domain.RoleDO;
import java.util.List;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

/**
* @author Allen
* @date 2018/3/7
*  <p>
*  RoleDO实体数据操作对象
*/
@Mapper
public interface RoleDAO extends BaseMapper<RoleDO> {
//其他公共方法!
}

来源:https://blog.csdn.net/apicescn/article/details/79538938

标签:Spring,Boot,Mybatis,Plus
0
投稿

猜你喜欢

  • Java Maven构建工具中mvnd和Gradle谁更快

    2022-02-15 04:39:52
  • android ToolBar的简单使用

    2023-03-05 10:44:33
  • C#实现JSON字符串序列化与反序列化的方法

    2023-12-01 12:40:23
  • 说说@ModelAttribute在父类和子类中的执行顺序

    2022-07-31 17:59:55
  • java中synchronized(同步代码块和同步方法)详解及区别

    2021-09-03 08:44:05
  • Android线程实现图片轮播

    2021-06-02 17:49:23
  • ViewDragHelper实现QQ侧滑效果

    2022-12-25 23:26:54
  • Java HtmlParse提取标签中的值操作

    2021-10-07 04:43:10
  • c#使用file.copy实现文件备份示例

    2021-06-03 05:13:13
  • spring cloud gateway中如何读取请求参数

    2021-08-19 16:19:02
  • java根据负载自动抓取jstack dump详情

    2021-09-05 01:47:05
  • 使用JPA自定义VO类型转换(EntityUtils工具类)

    2023-08-26 14:56:17
  • Android编程实现自动检测版本及自动升级的方法

    2023-06-07 16:24:23
  • Kotlin使用协程实现高效并发程序流程详解

    2021-12-27 20:47:21
  • Java几种常用的断言风格你怎么选

    2021-10-30 23:30:32
  • C# Split函数根据特定分隔符分割字符串的操作

    2023-11-07 07:40:25
  • Java毕业设计实战项目之仓库管理系统的实现流程

    2021-11-11 09:42:42
  • Java中Arraylist动态扩容方法详解

    2023-04-30 23:25:53
  • Android中ADB命令用法大结局

    2022-12-18 10:36:28
  • Java为什么基本数据类型不需要进行创建对象?

    2022-03-16 08:59:03
  • asp之家 软件编程 m.aspxhome.com