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


猜你喜欢
- & 按位运算符,逻辑运算符&& 逻辑运算符相同点:只要有一端为假,则语句不成立假设有三个参数int x = 1;in
- 存储过程:CREATE PROCEDURE [dbo].[Proc_GetInfo] @yw
- 我们在写linux的服务的时候,经常会用到linux的多线程技术以提高程序性能 多线程的一些小知识:一个应用程序可以启动若干个线程
- 首先介绍一些乐观锁与悲观锁:悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个
- Android ListView填充数据的方法因为多人开发,为了是自己开发的模块方便融合到主框架中,同时也为了减小apk的大小,要求尽可能少
- 当maven需要到的依赖jar包不在本地仓库时, 就需要到远程仓库下载 .这个时候如果mavensetting.xml中配置了镜像 , 而且
- 本文实例讲述了Android实现在xml文件中引用自定义View的方法。分享给大家供大家参考,具体如下:在xml中引用自定义view方法一:
- 安装完,或者绿色版解压完,先别打开Android Stduio。要先配置下Android Studio 的缓存路径。这个缓存文件主要是存放一
- spring Boot 使用事务非常简单,首先使用注解 @EnableTransactionManagement 开启事务支持后,然后在访问
- 前言最近项目中需要用到字符串加解密,遂研究了一波,发现密码学真的是博大精深,好多算法的设计都相当巧妙,学到了不少东西,在这里做个小小的总结,
- 1.this.Close(); 只是关闭当前窗口,若不是主窗体的话,是无法退出程序的,另外若有托管线程(非主线程),
- 本文实例讲述了Android编程之页面切换测试。分享给大家供大家参考。具体分析如下:一、软件平台:win7 + eclipse + sdk二
- 一、ID生成策略1、使用@TableId注解@TableId注解:主键注解使用位置:实体类主键字段。@Data@ToString@Table
- 关于滑动冲突在Android开发中,如果是一些简单的布局,都很容易搞定,但是一旦涉及到复杂的页面,特别是为了兼容小屏手机而使用了Scroll
- <?xml version="1.0" encoding="utf-8"?> <L
- 和Android UI layout一样,我们也可以在XML中定义应用程序的菜单。通过在菜单的onCreateOptionsMenu方法中膨
- 1、long long 和 __int64在C++ Primer当中提到的64位的int只有long long,但是在实际各种各样的C++编
- 通过2种方式模拟单个文件上传,效果如下所示开发步骤如下:1、新建一个web工程,导入struts2上传文件所需jar,如下图目录结构2、新建
- feign调用服务时参数内容过大场景前端参数传入到gateway后,gateway使用feign调用服务时,传入的参数内容过大(参数常见于富
- 本文主要介绍了Java实现雪花算法(snowflake),分享给大家,具体如下:简单描述最高位是符号位,始终为0,不可用。41位的时间序列,