SpringBoot之【mybatisplus】快速上手

2023-11-02

1、概述


MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,
为简化开发、提高效率而生。

特性
  • 无侵入:只做增强不做改变
  • 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作
  • 强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求
  • 支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错
  • 支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题
  • 支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作
  • 内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用
  • 内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List 查询,支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多种数据库
  • 内置性能分析插件:可输出 Sql 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询

2、快速开始


2.1 新建springboot,引入相关依赖

关键依赖:
 <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.18</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.3.0</version>
        </dependency>

2.2 配置文件


2.2.1 在resources下新建db文件
  1. 新建建表sql chema.sql
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)
);

2.数据导入文件 data.sql

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');
2.2.2 配置文件yml
spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql:///test?serverTimezone=UTC
    username: root
    password: root
    schema: classpath:db/chema.sql #后期注释掉,否则每次启动都会初始化sql,大坑啊
    data: classpath:db/data.sql #后期注释掉,否则每次启动都会初始化sql,大坑啊
    initialization-mode: always  #不加的话不会执行schema和data

2.3 编码


2.3.1 启动类增加mapper扫描
@SpringBootApplication
@MapperScan("com.example.mybatisplusdemo.mapper")
public class MybatisplusdemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(MybatisplusdemoApplication.class, args);
    }

}
2.3.2 新建实体类User
@Data     //lombok不了解的话自己了解下
public class User {
    private Long id;
    private String name;
    private Integer age;
    private String email;
}
2.3.2 在mapper下新建Usermapper
public interface UserMapper extends BaseMapper<User> {}

2.4 测试


@RunWith(SpringRunner.class)
@SpringBootTest
class MybatisplusdemoApplicationTests {

    @Autowired
    private UserMapper userMapper;

    @Test
    void testSelect() {
        List<User> users = userMapper.selectList(null);//null表示无条件
        Assert.assertEquals(5,users.size()); //简单断言
        users.forEach(System.out::println);
    }

}

输出内容

User(id=1, name=Jone, age=18, email=test1@baomidou.com)
User(id=2, name=Jack, age=20, email=test2@baomidou.com)
User(id=3, name=Tom, age=28, email=test3@baomidou.com)
User(id=4, name=Sandy, age=21, email=test4@baomidou.com)
User(id=5, name=Billie, age=24, email=test5@baomidou.com)

代码地址:https://github.com/jw-star/mybatis-plusDemo/tree/master/mybatisplusdemo
相关文章:
SpringBoot之【mybatisplus】快速上手
SpringBoot之【mybatisplus】代码生成器
SpringBoot之【mybatisplus】分页插件、条件查询、sql打印开启
SpringBoot之【mybatisplus】乐观锁

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SpringBoot之【mybatisplus】快速上手 的相关文章

  • 如何在java Spring Boot中实现通用服务类?

    我有许多具有重复代码的服务 我想知道如何实现通用服务 以便我的所有服务都可以扩展它 服务接口示例 重复代码 Service public interface IUserService List
  • 从休眠乐观锁定异常中恢复

    我有一个这样的方法 Transactional propagation Propagation REQUIRES NEW public void doSomeWork Entity entity dao loadEntity do some
  • 批处理文件并与数据库比较

    目前我正在开发一个 Spring Boot 应用程序 该应用程序定期尝试处理包含用户数据的文件 其中每行都包含userId and departamentId隔开 例如123534 13 该文件将包含数百万条记录 我的要求是以这样的方式将此
  • 用于缓存的 Servlet 过滤器

    我正在创建一个用于缓存的 servlet 过滤器 这个想法是将响应主体缓存到memcached 响应正文由以下方式生成 结果是一个字符串 response getWriter print result 我的问题是 由于响应正文将不加修改地放
  • 无法加载身份验证插件“caching_sha2_password”

    我正在将 MySQL 8 0 与 MySQL Workbench 连接并收到以下错误 无法加载身份验证插件 caching sha2 password dlopen usr local mysql lib plugin caching sh
  • sql直接获取表行数的方法

    stackoverflow 的朋友们大家好 我的例行程序中有一个我认为不必要的步骤 假设您想从图库中获取所有图像 并限制每页一定数量的图像 db PDO object start pagenum x images per page limi
  • 在 Clojure 中解压缩 zlib 流

    我有一个二进制文件 其内容由zlib compress在Python上 有没有一种简单的方法可以在Clojure中打开和解压缩它 import zlib import json with open data json zlib wb as
  • JAVA中遍历JSON数据

    我是 JSON 新手 我使用 HTTPUrlConnections 并在 JAVA 程序中获得一些响应 响应数据将类似于 data id 1 userId 1 name ABC modified 2014 12 04 created 201
  • 避免 Java 中的重复导入:继承导入?

    有没有办法 继承 导入 Example 常见枚举 public enum Constant ONE TWO THREE 使用此枚举的基类 public class Base protected void register Constant
  • Lombok @Builder 不创建不可变对象?

    在很多网站上 我看到 lombok Builder 可以用来创建不可变的对象 https www baeldung com lombok builder singular https www baeldung com lombok buil
  • 控制数据是否存在于数组中

    我在mysql中有两个不同的表 我正在使用curl从json文件中获取数据 我的第一个表名称是 tblclients 该表存储客户端数据 我的第二个表名称是 tblcustomfieldsvalues 该表使用 tblclients 表的
  • 如何处理 StaleElementReferenceException

    我正在为鼠标悬停工作 我想通过使用 for 循环单击每个链接来测试所有链接的工作条件 在我的程序中 迭代进行一次 而对于下一次迭代 它不起作用并显示 StaleElementReferenceException 如果需要 请修改代码 pub
  • JMS 中的 MessageListener 和 Consumer 有什么区别?

    我是新来的JMS 据我了解Consumers能够从队列 主题中挑选消息 那么为什么你需要一个MessageListener因为Consumers会知道他们什么时候收到消息吗 这样的实际用途是什么MessageListener 编辑 来自Me
  • 源值 1.5 的错误已过时,将在未来版本中删除

    我使用 scala maven plugin 来编译包含 scala 和 java 代码的项目 我已经将源和目标设置为1 7 但不知道为什么maven仍然使用1 5 这是我在 pom xml 中的插件
  • ECDH使用Android KeyStore生成私钥

    我正在尝试使用 Android KeyStore Provider 生成的私有文件在 Android 中实现 ECDH public byte ecdh PublicKey otherPubKey throws Exception try
  • 如何对字段数据进行分组?

    我有 sql 查询来显示数据 SELECT artikel foto naam fotografer id fotografer name fotografer customer first name customer last name
  • 记录类名、方法名和行号的性能影响

    我正在我的 java 应用程序中实现日志记录 以便我可以调试应用程序投入生产后可能出现的潜在问题 考虑到在这种情况下 人们不会奢侈地使用 IDE 开发工具 以调试模式运行事物或单步执行完整代码 因此在每条消息中记录类名 方法名和行号将非常有
  • ArrayList.clear() 和 ArrayList.removeAll() 有什么区别?

    假如说arraylist定义为ArrayList
  • 将对象从手机共享到 Android Wear

    我创建了一个应用程序 在此应用程序中 您拥有包含 2 个字符串 姓名和年龄 和一个位图 头像 的对象 所有内容都保存到 sqlite 数据库中 现在我希望可以在我的智能手表上访问这些对象 所以我想实现的是你可以去启动 启动应用程序并向左和向
  • 即使调整大小,如何获得屏幕的精确中间位置

    好的 这个问题有两部分 当我做一个JFrame 并在其上画一些东西 即使我将宽度设置为 400 并使其在一个项目击中它时 当然 允许项目宽度 它会反弹回来 但由于某种原因 它总是偏离屏幕约 10 个像素 有没有办法解决这个问题 或者我只需要

随机推荐

  • 报错解决:PermissionError

    在linux环境中安装jupyter notebook的时候遇到的错误 记录一下 PermissionError Errno 13 Permission denied run user 1002 jupyter 解决办法 chmod 777
  • 一文读懂深度学习中的矩阵微积分

    点击上方 小白学视觉 选择加 星标 或 置顶 重磅干货 第一时间送达 本文转自 视学算法 想要真正了解深度神经网络是如何训练的 免不了从矩阵微积分说起 虽然网络上已经有不少关于多元微积分和线性代数的在线资料 但它们通常都被视作两门独立的课程
  • 双向LSTM 对航空乘客预测

    前言 1 LSTM 航空乘客预测 单步预测和多步预测 简单运用LSTM 模型进行预测分析 2 加入注意力机制的LSTM 对航空乘客预测采用了目前市面上比较流行的注意力机制 将两者进行结合预测 3 多层 LSTM 对航空乘客预测 简单运用多层
  • cmd 用命令连接oracle数据库

    这里所用的数据库在tnsnames ora里的配置 mesdb155 DESCRIPTION ADDRESS PROTOCOL TCP HOST IP地址 PORT 端口号 CONNECT DATA SERVER XXX SERVICE N
  • Spring之Joinpoint类详解

    说明 Joinpoint是AOP的连接点 一个连接点代表一个被代理的方法 我们从源码角度看连接点有哪些属性和功能 源码 Copyright 2002 2016 the original author or authors Licensed
  • CentOS7安装Keepalived详细步骤

    1 首先先去Keepalived官网上下载 官网地址 2 把下载好的Keepalived压缩包上传到我们的CentOS7系统上 然后输入下面解压命令进行解压 tar zxvf keepalived 2 0 18 tar gz 3 先进入Ke
  • 7 - 简单状态机代码设计

    7 简单状态机代码设计 三角波发生器 代码 2021 11 21 lyw The simplest state machine triangle wave generator timescale 1ns 10ps module tri ge
  • 记一次使用hive-jdbc+tomcat-jdbc连接(Connection)中断的处理过程

    现象描述 Hive环境一个数据库 拥有表8000 业务代码需要挨个desc tableName 来获取表信息 当程序运行到4000 左右 开始出现获取信息失败 查找原因 通过查看日志发现是连接已断开 具体如下 INFO org apache
  • Kaggle——Rain in Australia (Predict rain tomorrow in Australia)

    文章目录 写在前面 1 案例背景 2 解读数据 2 导入数据进行数据分析及特征工程 2 1 概览数据 2 2 探索数据 2 2 1 探索数据类型 2 2 2 探索缺失值 2 2 3 产生训练集和测试集 2 2 4 分析是否存在样本不平衡问题
  • 在笔试题面试题中,如果出现加法和乘法,要注意是否越界的问题

    比如不设置另外变量 a和b如何置换 一法为相加的方法 可能越界 二法为异或法 程序员面试宝典也有此题 再比如类似问题是华为上机试题 如何求整数数组中大于平均值的个数 如果最用求平均值的方法 就会出现浮点数 为避免出现浮点数 可以转化为总和与
  • java基础(三)数组字典,类与对象

    字符串去重 public class Test04 public static void removeMrthod String s StringBuffer sb new StringBuffer boolean flag false f
  • gradle-5.6.4-all 百度网盘下载CSDN快速下载

    Gradle 5 6 4 发布 Gradle团队很兴奋地宣布Gradle 5 6 4 此版本的特点是提高Groovy编译速度的改进 的新插件Java测试夹具和更好地管理插件版本在多项目构建中 这是Gradle 5 x的最终次要版本 还有许多
  • vue组件和js实现鼠标悬停显示title效果

    需求 显示文本内容过长 显示 鼠标悬浮时 全部显示 使用element组件
  • [开发

    下载安装人大金仓常见问题 需要去人大金仓https www kingbase com cn qd index htm下载linux版iso文件和授权文件 license 企业版 90天 iso文件需要挂载在指定目录下 参考 https ww
  • “电脑登录界面显示引用的账户当前已锁定”解决办法

    一 电脑登录界面显示引用的账户当前已锁定 解决办法 https www zhihu com question 400540089 answer 2159778869 具体步骤 1 开机进BIOS系统 不同机型方法不同 具体可百度 2 进入B
  • 服务器正常运行温度范围 & ubuntu查看cpu温度 & cpu温度过高

    服务器正常运行温度范围 服务器正常运行温度 服务器cpu的温度在什么范围内是属于正常温度 weixin 39571219的博客 CSDN博客 CPU温度 一般在45 65 或更低 如果在75 80 则要检查CPU和风扇间是否正常 更换CPU
  • 【基带】手机外设之SIM卡槽电路及其变化

    SIM卡槽是手机通讯必不可少的外设 从卸电池插卡到弹出式卡槽 双卡双待诞生后 从并行式双卡槽到现在重叠式双卡槽 SIM卡形态从曾经的大卡到Micro卡和NANO卡 SIM卡槽也随之经历了一系列变化 一 SIM卡原理 PIN1 VCC 电源输
  • css样式不能显示(史上最全)

    文章目录 css样式不能显示常见问题 浏览器问题 浏览器缓存 Google浏览器css显示不了 细节问题 外部样式引入错误 其他细节问题 选择器问题 编码格式问题 样式层叠问题 最后可根据流程图检查 css样式不能显示常见问题 浏览器问题
  • 机器学习笔记--2.1文本分类

    从分类算法层面来看 各类语言的文本分类技术大同小异 但从整个流程来考察 不同语言的文本处理所用到的技术还是有差别的 下面给出中文语言的文本分类技术和流程 主要包括以下几个步骤 1 预处理 去除文本的噪声信息 例如HTML标签 文本格式转换
  • SpringBoot之【mybatisplus】快速上手

    文章目录 1 概述 特性 2 快速开始 2 1 新建springboot 引入相关依赖 2 2 配置文件 2 2 1 在resources下新建db文件 2 2 2 配置文件yml 2 3 编码 2 3 1 启动类增加mapper扫描 2