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

news2024/12/27 13:59:01
一、引言

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.Driver
    url: jdbc:mysql://localhost:3306/your_database_name?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
    username: your_username
    password: your_password
 
mybatis-plus:
  mapper-locations: classpath:/mapper/*.xml
  type-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
     */
    @TableId
    private 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 {

    @Autowired
    private 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.coloradmin.cn/o/2185957.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《PMI-PBA认证与商业分析实战精析》第5章 需求启发与分析

第5章 需求启发与分析 本章主要内容&#xff1a; 需求启发 需求分析 模型化与优化需求 记录、确认、核实和批准需求 本章涵盖的考试重点&#xff1a; 需求启发的四项活动 需求启发的八项技术 启发提问的四种类型问题 启发原型的类型 访谈的四种分类 观察技术的四种类…

华三资源

华三华三官方网站华三公司官网新华三 - 融绘数字未来&#xff0c;共享美好生活华三华三文档中心华三文档资源文档中心-新华三集团-H3C华三华三 ICT百科华三 ICT知识百科H3C ICT知识百科-新华三集团-H3C华三华三文档高级查找高级文档搜索新华三 - 融绘数字未来&#xff0c;共享美…

已解决:Could not find artifact xxx

已解决&#xff1a;Could not find artifact xxx 文章目录 写在前面问题描述报错原因分析 解决思路解决办法1. 检查依赖声明的正确性2. 检查远程仓库配置3. 检查网络连接4. 清理本地缓存并强制更新5. 手动上传依赖到私有仓库6. 检查本地仓库是否已被损坏 总结 写在前面 在使用…

V2V迁移:vsphere至openstack

预检查 检测待迁移实例是否已安装并配置virtio相关的块设备驱动、网卡驱动&#xff0c;linux包括kernel、initramfs&#xff0c;windows包括磁盘控制器、网卡。 Linux 系统检查 Virtio 驱动 Windows 系统检查 Virtio 驱动 环境 1、下载安装ovftool 2、安装qemu-kvm&#x…

数据结构-二叉树介绍及其在Java中遍历算法实现

一、二叉树介绍 1、二叉树(Binary tree)的定义 二叉树(binary tree)是树形结构的一个重要类型,是指树中节点的度不大于2的有序树,它是一种最简单且最重要的树。二叉树的递归定义为:二叉树是一棵空树,或者是一棵由一个根节点和两棵互不相交的,分别称作根的左子树和右…

Angular基础学习(入门 --> 入坑)

目录 一、Angular 环境搭建 二、创建Angular新项目 三、数据绑定 四、ngFor循环、ngIf、ngSwitch、[ngClass]、[ngStyle]、管道、事件、双向数据绑定--MVVM 五、DOM 操作 &#xff08;ViewChild&#xff09; 六、组件通讯 七、生命周期 八、Rxjs 异步数据流 九、Http …

SuperMap iClient for MapLibreGL 根据SQL条件过滤显示动态图层

查阅发现iClient 有子图层控制类 LayerStatus 可实现&#xff1a;子图层显示参数类。此类存储了各个子图层的名称、是否可见的状态、SQL 过滤条件等参数。 API详情&#xff1a;http://support.supermap.com.cn:8090/iserver/iClient/forJavaScript/docs/maplibregl/LayerStatus…

java_整型

1.整数类型 2.整型细节 Java各整数类型有固定的范围和字段长度&#xff0c;不受具体OS【操作系统】的影响&#xff0c;以保证Java程序的可移植性 Java的整型常量&#xff08;具体值&#xff09;默认为int型&#xff0c;声明long型常量后需加"l"或"L" pu…

计算机网络:计算机网络体系结构 —— OSI 模型 与 TCP/IP 模型

文章目录 计算机网络体系结构OSI 参考模型TCP/IP 参考模型分层的必要性物理层的主要问题数据链路层的主要问题网络层的主要问题运输层的主要问题应用层的主要问题 分层思想的处理方法发送请求路由器转发接受请求发送响应接收响应 计算机网络体系结构 计算机网络体系结构是指将…

一文说完c++全部基础知识,IO流(二)

一、IO流 流、一连串连续不断的数据集合。 看下图&#xff0c;继承关系 using namespace 流类的构造函数 eg:ifstream::ifstream (const char* szFileName, int mode ios::in, int); #include <iostream> #include <fstream> using namespace std; int main()…

堆排序算法详解:原理与Python实现

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storm…

注册安全分析报告:科研诚信查询平台无验证方式导致安全隐患

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 1. 暴力破解密码&#xff0c;造成用户信息泄露 2. 短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉 3. 带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造…

《MoCo:Momentum Contrast for Unsupervised Visual Representation Learning》中文校对版

系列文章目录 文章目录 系列文章目录摘要1.简介2.相关工作3.方法3.1.作为字典查找的对比学习2、3、 五、1、2、3、 六、1、2、3、 七、1、2、3、 八、1、2、3、 摘要 我们提出了用于无监督视觉表示学习的动量对比&#xff08;MoCo&#xff09;。从对比学习[29]作为字典查找的角…

死锁的成因与解决方案

目录 死锁的概念与成因 栗子 死锁的情况 哲学家问题 如何避免死锁 必要条件 死锁的解决方案 总结 死锁的概念与成因 多个线程同时被阻塞,他们中的其中一个或者全部都在等待某个资源的释放,导致线程无限期被阻塞,程序无法停止 栗子 我和美女a出去吃饺子,吃饺子要醋和酱油…

【EXCEL数据处理】000011 案列 EXCEL带有三角形图标的单元格转换,和文本日期格式转换。

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 【EXCEL数据处理】000011 案列 EXCEL带有三角形图标的单元格转换。使用…

Pikachu-csrf-CSRF(get)

登陆&#xff0c;修改个人信息&#xff1b;发现这是个get请求 把请求连接复制出来 ​http://192.168.3.224:8082/vul/csrf/csrfget/csrf_get_edit.php?sex1&phonenum1&add2&email3&submitsubmit就是 get请求的csrf 攻击payload

阿里云域名解析和备案

文章目录 1、域名解析2、新手引导3、ICP备案 1、域名解析 2、新手引导 3、ICP备案

重放Net-NTLM HASH 实验

先记录relay2SMB的&#xff0c;relay2LDAP的会补上来。 后面的一些利用EXCHANGE服务器的writedacl权限来relay2EWS DCSync的等我安了EXCHANGE再说吧2333。。 1. relay2SMB 0x01 smbrelayx.py 监听Net-NTLM&#xff0c;然后中继到win2008的SMB服务&#xff0c;执行whoami命…

CSS多列

CSS多列 前言 有的时候希望文本能按照多列效果显示&#xff0c;如&#xff1a; 这时候就要把文本显示效果改成多列显示&#xff0c;标题独占一行 CSS文本多列使用 ① column-count 指定文本分为几列&#xff0c;如&#xff1a; column-count: 3;② column-gap 指定列之…

微型导轨在IC制造设备的应用与优势

微型导轨的精度和稳定性对于机器的准确执行任务至关重要&#xff0c;其精确度通常用微米或毫米来衡量。其尺寸可以做到非常小&#xff0c;常运用在小型设备上&#xff0c;尤其是在IC制造设备中&#xff0c;其应用非常广泛。 在IC制造设备中主要用于半导体芯片的切割、封装和测试…