Spring Boot 和 MyBatis-Plus凑一块儿了,这份教程你得看

一、引言

MyBatis-Plus 是 MyBatis 的增强版,提供了 CRUD 接口、分页插件、性能分析插件等特性,简化了开发过程。本文将详细介绍如何在 Spring Boot 项目中集成 MyBatis-Plus。

支持的数据看也越来越多,值得去搞一下,写了一个小例子

二、环境准备
  1. JDK 8 或以上版本
  2. Maven 3.8或以上版本
  3. IntelliJ IDEA 或其他开发工具
  4. MySQL 数据库
三、创建 Spring Boot 项目

使用 Spring Initializr 创建一个基本的 Spring Boot 项目,并选择如下依赖:

  • Spring Web
  • MyBatis-Plus
  • MySQL Driver
  • Lombok(idea中也得安装lombok对应插件)
示例:

可以通过访问 Spring Initializr 在线生成项目或者阿里的也行(https://start.aliyun.com/bootstrap.html),个人比较喜欢用页面的方式,也可以在 IDEA 中直接创建。

四、添加依赖

<font style="color:rgb(38, 38, 38);">pom.xml 文件中添加 MyBatis-Plus 的相关依赖:

<dependencies><!-- Spring Boot Starter --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><!-- Spring Boot Starter Web --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- MyBatis-Plus Starter --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5</version></dependency><!-- MySQL Connector --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><!-- Spring Boot Starter Test --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency>
</dependencies>
五、配置数据库连接初始化数据

建表语句:

-- test.`user` definition 创建一个test库CREATE TABLE `user` (`id` bigint DEFAULT NULL COMMENT 'id',`name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '名称',`age` int DEFAULT NULL COMMENT '年龄',`email` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '邮件'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表';INSERT INTO test.`user` (id,name,age,email) VALUES(1,'yuanmomo',18,'u8475845@qq.com'),(2,'eefsfsdf',23,'dfjsdshj@qq.com');

<font style="color:rgb(38, 38, 38);">src/main/resources 目录下创建 <font style="color:rgb(38, 38, 38);">application.yml 文件,配置数据库连接信息:

spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/your_database_name?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghaiusername: your_usernamepassword: your_passwordmybatis-plus:mapper-locations: classpath:/mapper/*.xmltype-aliases-package: com.yuanmomo.demo.entity
六、创建实体类

<font style="color:rgb(38, 38, 38);">src/main/java/com/yuanmomo/demo/entity 目录下创建实体类,例如 <font style="color:rgb(38, 38, 38);">User.java

package com.yuanmomo.demo.entity;import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;@Data
@TableName("user")
public class User {/*** id*/@TableIdprivate Long id;/*** 姓名*/private String name;/*** 年龄*/private Integer age;/*** 邮件*/private String email;
}
七、创建 Mapper 接口

<font style="color:rgb(38, 38, 38);">src/main/java/com/yuanmomo/demo/mapper 目录下创建 Mapper 接口,例如 <font style="color:rgb(38, 38, 38);">UserMapper.java

package com.yuanmomo.demo.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yuanmomo.demo.entity.User;
import org.apache.ibatis.annotations.Mapper;@Mapper
public interface UserMapper extends BaseMapper<User> {
}
八、创建 Service 层

<font style="color:rgb(38, 38, 38);">src/main/java/com/yuanmomo/demo/service 目录下创建服务接口和实现类:

服务接口 UserService.java
package com.yuanmomo.demo.service;import com.baomidou.mybatisplus.extension.service.IService;
import com.yuanmomo.demo.entity.User;public interface UserService extends IService<User> {
}

服务实现类 <font style="color:rgb(38, 38, 38);">UserServiceImpl.java

package com.yuanmomo.demo.service.impl;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanmomo.demo.entity.User;
import com.yuanmomo.demo.mapper.UserMapper;
import com.yuanmomo.demo.service.UserService;
import org.springframework.stereotype.Service;@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
}
九、创建 Controller 层

<font style="color:rgb(38, 38, 38);">src/main/java/com/yuanmomo/demo/controller 目录下创建控制器类 <font style="color:rgb(38, 38, 38);">UserController.java

package com.yuanmomo.demo.controller;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.yuanmomo.demo.entity.User;
import com.yuanmomo.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;import java.util.List;@RestController
@RequestMapping("/user")
public class UserController {@Autowiredprivate UserService userService;@GetMapping("/list")public List<User> list() {return userService.list();}@PostMapping("/add")public boolean add(@RequestBody User user) {return userService.save(user);}@PutMapping("/update")public boolean update(@RequestBody User user) {return userService.updateById(user);}@DeleteMapping("/delete/{id}")public boolean delete(@PathVariable Long id) {return userService.removeById(id);}
}
十、编写 Mapper XML 文件

<font style="color:rgb(38, 38, 38);">src/main/resources/mapper 目录下创建 <font style="color:rgb(38, 38, 38);">UserMapper.xml 文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yuanmomo.demo.mapper.UserMapper"><resultMap id="BaseResultMap" type="com.yuanmomo.demo.entity.User"><id column="id" property="id"/><result column="name" property="name"/><result column="age" property="age"/><result column="email" property="email"/></resultMap><sql id="Base_Column_List">id, name, age, email</sql><select id="selectAll" resultMap="BaseResultMap">SELECT <include refid="Base_Column_List"/>FROM user</select>
</mapper>
十一、运行项目

确保数据库配置正确后,启动 Spring Boot 应用。访问 <font style="color:rgb(38, 38, 38);">http://localhost:8080/user/list 应该能看到用户列表。

十二、总结

通过以上步骤,我们完成了 Spring Boot 项目与 MyBatis-Plus 的集成。MyBatis-Plus 简化了大量繁琐的 CRUD 操作,提高了开发效率。通过结合 Spring Boot 的强大功能,我们可以更快速地构建高效、稳定的企业级应用。

附:完整项目结构
src
├── main
│   ├── java
│   │   └── com
│   │       └── yuanmomo
│   │           └── demo
│   │               ├── controller
│   │               │   └── UserController.java
│   │               ├── entity
│   │               │   └── User.java
│   │               ├── mapper
│   │               │   └── UserMapper.java
│   │               ├── service
│   │               │   ├── UserService.java
│   │               │   └── impl
│   │               │       └── UserServiceImpl.java
│   │               └── DemoApplication.java
│   ├── resources
│   │   ├── application.yml
│   │   └── mapper
│   │       └── UserMapper.xml
│   └── test
│       └── java
│           └── com
│               └── yuanmomo
│                   └── demo
│                       └── DemoApplicationTests.java
└── pom.xml

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/437595.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hive数仓操作(八)

一、Hive中的分桶表 1. 分桶表的概念 分桶表是Hive中一种用于提升查询效率的表类型。分桶指的是根据指定列的哈希值将数据划分到不同的文件&#xff08;桶&#xff09;中。 2. 分桶表的原理 哈希分桶&#xff1a;根据分桶列计算哈希值&#xff0c;对哈希值取模&#xff0c;将…

三维激光扫描技术在文保修缮项目中的应用

三维激光扫描技术作为一种新兴的高精度空间数据获取手段&#xff0c;其在文物保护和修缮项目中的应用日益广泛。这项技术通过快速获取物体表面的三维密集点云数据&#xff0c;为文物的数字化存档、保护、修复及再利用提供了强有力的技术支持。 数据采集&#xff1a;高精度与非接…

Python案例--水仙花数的探索之旅

一、引言 水仙花数&#xff0c;也称为阿姆斯特朗数&#xff0c;是一种特殊的三位数&#xff0c;其各位数字的立方和等于其本身。例如&#xff0c;153就是一个水仙花数&#xff0c;因为 135333153135333153。这种数字的发现不仅展示了数字的内在美&#xff0c;也激发了人们对数…

Element-plus安装及其基础组件使用

简而言之&#xff0c;在main.js中导出以下库,仅此&#xff0c;搞多了出错难排查 import ElementPlus from element-plus //导入ElementPlus 模块 import element-plus/dist/index.css //引入样式 app.use(ElementPlus) //注册库就能使用了 Element Plus 是一个基于 Vue 3 的组件…

《Linux从小白到高手》理论篇(十一):Linux的系统环境管理

值此国庆佳节&#xff0c;深宅家中&#xff0c;闲来无事&#xff0c;就多写几篇博文。本篇详细深入介绍Linux的系统环境管理。 环境变量 linux系统下&#xff0c;如果你下载并安装了应用程序&#xff0c;很有可能在键入它的名称时出现“command not found”的提示内容。如果每…

2024必备英语在线翻译工具推荐

英语在线翻译工具就如同一位随时待命的语言助手&#xff0c;为我们打破语言障碍&#xff0c;搭建起沟通的桥梁。接下来&#xff0c;让我们一起深入了解这些英语在线翻译工具的丰富功能及其为我们带来的便利。 1.福昕在线翻译 链接直达>>https://fanyi.pdf365.cn/doc …

命令按钮QLink

主要作用用来点击后可以自动打开系统的网页浏览器&#xff0c;跳转到指定的网页 常用方法 文本 //获取和设置文本 QString text() const void setText(const QString &text)描述信息 //获取和设置描述文本 QString description() const void setDescription(const QSt…

【RabbitMQ】面试题

在本篇文章中&#xff0c;主要是介绍RabbitMQ一些常见的面试题。对于前几篇文章的代码&#xff0c;都已经在码云中给出&#xff0c;链接是mq-test: 学习RabbitMQ的一些简单案例 (gitee.com)&#xff0c;如果存在问题的话欢迎各位提出&#xff0c;望共同进步。 MQ的作用以及应用…

【web安全】——XXE漏洞

1.XML基础 1.1.XML简介 XML被称为可扩展标记语言&#xff0c;与HTML类似&#xff0c;但是HTML中的标签都是预定义(预先定义好每个标签的作用)的&#xff0c;而XML语言中的标签都是自定义(可以自己定义标签的名称、属性、值、作用)的;HTML中的标签可以是单标签&#xff0c;而X…

SpringMVC源码-SpringMVC框架中Spring父容器和SpringMVC子容器加载的流程以及SpringMVC九大内置组件的初始

一、Spring父容器启动 SpringMVC 的项目结构如下: applicationContext.xml spring的配置文件 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.o…

机器学习西瓜书笔记(十三) 第十三章半监督学习+代码

第十三章 13 半监督学习13.1 未标记样本13.3.1 小结 13.2 生成式方法13.2.1 小结 13.3 半监督SVM13.3.1 小结 13.4 图半监督学习13.4.1 小结 13.5 基于分歧的方法13.5.1 小结 13.6 半监督聚类13.6.1 小结 13.7 代码&#xff1a;手写数据集上的标签传播-性能展示章末小结 13 半监…

数据结构——初识树和二叉树

线性结构是一对一的关系&#xff0c;意思就是只有唯一的前驱和唯一的后继&#xff1b; 非线性结构&#xff0c;如树形结构&#xff0c;它可以有多个后继&#xff0c;但只有一个前驱&#xff1b;图形结构&#xff0c;它可以有多个前驱&#xff0c;也可以有多个后继。 树的定义…

变电站红外检测数据集 1180张 变电站红外 标注voc yolo 13类

变电站红外检测数据集 1180张 变电站红外 标注voc yolo 13类 变电站红外检测数据集 名称 变电站红外检测数据集 (Substation Infrared Detection Dataset) 规模 图像数量&#xff1a;1185张图像。类别&#xff1a;13种设备类型。标注个数&#xff1a;2813个标注。 数据划分…

多模态RAG实现

在标准 RAG 中&#xff0c;输入文档包含文本数据。LLM 利用上下文学习&#xff0c;通过检索与所提查询上下文相匹配的文本文档块来提供更相关、更准确的答案。 但是&#xff0c;如果文档包含图像、表格、图表等以及文本数据&#xff0c;该怎么办&#xff1f; 不同的文档格式包…

华为GaussDB数据库之Yukon安装与使用

一、Yukon简介 Yukon&#xff08;禹贡&#xff09;&#xff0c;基于openGauss、PostgreSQL、GaussDB数据库扩展地理空间数据的存储和管理能力&#xff0c;提供专业的GIS&#xff08;Geographic Information System&#xff09;功能&#xff0c;赋能传统关系型数据库。 Yukon 支…

linux桌面软件(wps)内嵌到其他窗口

程序测试环境是&#xff1a;slackware系统&#xff0c;属于linux系统&#xff0c;有桌面&#xff08;Xface Session&#xff09;。系统镜像是&#xff1a;slackware64-15.0-install-dvd.iso。qt、c代码实现。 程序功能&#xff1a;将已经打开的wps&#xff08;word、pdf等都可…

Android SystemUI组件(09)唤醒亮屏 锁屏处理流程

该系列文章总纲链接&#xff1a;专题分纲目录 Android SystemUI组件 本章关键点总结 & 说明&#xff1a; 说明&#xff1a;本章节持续迭代之前章节的思维导图&#xff0c;主要关注左侧上方锁屏分析部分 唤醒亮屏 即可。 Power按键的处理逻辑最终是由PhoneWindowManager来…

Watchdog Timers(WDT)

文章目录 1. 介绍2. Feature List3. 概述3.1. Safety Watchdog3.2. CPU Watchdog 4. 看门狗定时器功能5. Endinit Functions5.1 Password Access to WDTxCON05.1.1 Static Password5.1.2 Automatic Password Sequencing 5.2 Check Access to WDTxCON05.3 Modify Access to WDTx…

[C++]使用C++部署yolov11目标检测的tensorrt模型支持图片视频推理windows测试通过

官方框架&#xff1a; https://github.com/ultralytics/ultralytics yolov8官方最近推出yolov11框架&#xff0c;标志着目标检测又多了一个检测利器&#xff0c;于是尝试在windows下部署yolov11的tensorrt模型&#xff0c;并最终成功。 重要说明&#xff1a;安装环境视为最基…

Tiny-universe手戳大模型TinyRAG--task4

TinyRAG 这个模型是基于RAG的一个简化版本&#xff0c;我们称之为Tiny-RAG。Tiny-RAG是一个基于RAG的简化版本&#xff0c;它只包含了RAG的核心功能&#xff0c;即Retrieval和Generation。Tiny-RAG的目的是为了帮助大家更好的理解RAG模型的原理和实现。 1. RAG 介绍 LLM会产…