当前位置: 首页 > java >正文

基于SpringBoot3实现MyBatis-Plus(SSMP)整合快速入门CURD(增删改查)

目录

一、快速搭建SpringBoot-Web工程脚手架。

1.1 Spring Initializr 初始化工程。(官方提供)

1.2 工程脚手架初始化详细步骤。(IDEA2024.1.1)

二、MyBatis-Plus的特性与快速上手。

2.1 官网地址与基本特性。

2.2 快速上手技术栈基础。

2.3 Spring Boot2 的 MyBatis-Plus Starter 依赖。

2.4 Spring Boot3 的 MyBatis-Plus Starter 依赖。(当前使用)

三、基于SpringBoot实现SSMP整合入门CURD步骤。

3.1 引入Lombok、Druid核心起步依赖。

3.2 编写application.yml配置文件。

3.3 包结构创建与分层。

3.4 实体类Student。

 3.5 controller层。(RESTful风格的增删改查请求接口)

3.6 service层。(MyBatis-Plus开发极简化)

<1>StudentService。(继承 IService 接口)

<2>StudentServiceImpl。(继承 ServiceImpl 类。实现 StudentService 接口)

3.7 mapper层。(MyBatis-Plus开发极简化)

<1>StudentMapper。(继承 BaseMapper 接口)

3.8 封装响应结果类Result。

3.9 增删改查接口的测试与响应。

<1>http://localhost:8080/student/list。(查询所有)

<2>http://localhost:8080/student/selectById。(根据id查询)

<3>http://localhost:8080/student/save。(新增)

修改配置文件中连接池的空闲检测参数。

<4>http://localhost:8080/student/update。(修改)

<5>http://localhost:8080/student/remove。(删除)​


一、快速搭建SpringBoot-Web工程脚手架。

1.1 Spring Initializr 初始化工程。(官方提供)


1.2 工程脚手架初始化详细步骤。(IDEA2024.1.1)










二、MyBatis-Plus的特性与快速上手。

2.1 官网地址与基本特性。
  • MyBatis-Plus 🚀 为简化开发而生


2.2 快速上手技术栈基础。

2.3 Spring Boot2 的 MyBatis-Plus Starter 依赖。
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.11</version>
</dependency>
2.4 Spring Boot3 的 MyBatis-Plus Starter 依赖。(当前使用)
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-spring-boot3-starter</artifactId><version>3.5.11</version>
</dependency>

三、基于SpringBoot实现SSMP整合入门CURD步骤。

3.1 引入Lombok、Druid核心起步依赖。
        <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!-- https://mvnrepository.com/artifact/com.alibaba/druid-spring-boot-starter --><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.8</version></dependency>
3.2 编写application.yml配置文件。


# 数据源配置
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/hyl?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2b8username: rootpassword: root123type: com.alibaba.druid.pool.DruidDataSource  # 声明Druid数据源类型声明# mybatis-plus配置
mybatis-plus:mapper-locations: classpath:/mapper/*.xmlconfiguration:log-impl: org.apache.ibatis.logging.stdout.StdOutImplmap-underscore-to-camel-case: trueglobal-config:db-config:id-type: AUTO
3.3 包结构创建与分层。


3.4 实体类Student。
  • 实体类 Student 与数据库表 tb_student 对应,每个属性对应表中的一个字段。
  • @TableName 注解指定了表名,@TableField 注解指定了属性对应表中的字段名

  • 代码示例。
package com.hyl.pojo;import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;@TableName("tb_student")  // 表明该类对应数据库中的 tb_student 表
@Data
public class Student {private Integer id;private String username;private String password;private String name;private Integer age;@TableField("is_boy")  // 表明该属性对应数据库表中的 is_boy 字段private String isBoy;
}
 3.5 controller层。(RESTful风格的增删改查请求接口)
  • http://localhost:8080/student/list。(查询所有)
  • http://localhost:8080/student/selectById。(根据id查询)
  • http://localhost:8080/student/save。(新增)
  • http://localhost:8080/student/update。(修改)
  • http://localhost:8080/student/remove。(删除)
package com.hyl.controller;import com.hyl.pojo.Result;
import com.hyl.pojo.Student;
import com.hyl.service.StudentService;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.*;import java.util.List;@RestController
@RequestMapping("/student")
public class StudentController {@Resourceprivate StudentService studentService;/*** 查询所有信息* @return*/@GetMapping("/list")public Result selectList(){List<Student> list = studentService.list();return Result.success("查询成功",list);}/*** 根据id查询* @param id* @return*/@GetMapping("selectById")public Result selectById(@RequestParam Integer id){Student student = studentService.getById(id);return Result.success("查询成功",student);}/*** 新增* @param student* @return*/@PostMapping("/save")public Result save(@RequestBody Student student){boolean flag = studentService.save(student);return flag ? Result.success("新增成功") : Result.error();}/*** 修改* @param student* @return*/@PutMapping("/update")public Result update(@RequestBody Student student){boolean flag = studentService.updateById(student);return flag ? Result.success("修改成功") : Result.error();}/*** 删除* @param id* @return*/@DeleteMapping("/remove")public Result delete(@RequestParam Integer id){boolean flag = studentService.removeById(id);return flag ? Result.success("删除成功") : Result.error();}}
3.6 service层。(MyBatis-Plus开发极简化)
<1>StudentService。(继承 IService 接口)
  • 注意:IService<Student实体类>
package com.hyl.service;import com.baomidou.mybatisplus.extension.service.IService;
import com.hyl.pojo.Student;public interface StudentService extends IService<Student> {
}

<2>StudentServiceImpl。(继承 ServiceImpl 类。实现 StudentService 接口)
  • 注意:ServiceImpl<StudentMapper接口,Student实体类>
package com.hyl.service.impl;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hyl.mapper.StudentMapper;
import com.hyl.pojo.Student;
import com.hyl.service.StudentService;
import org.springframework.stereotype.Service;@Service
public class StudentServiceImpl extends ServiceImpl<StudentMapper, Student> implements StudentService {
}
3.7 mapper层。(MyBatis-Plus开发极简化)
<1>StudentMapper。(继承 BaseMapper 接口)
  • 注意:BaseMapper<Student实体类>
package com.hyl.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hyl.pojo.Student;public interface StudentMapper extends BaseMapper<Student> {
}
3.8 封装响应结果类Result。
package com.hyl.pojo;import lombok.Data;//封装响应结果类
@Data
public class Result {private String code;private String msg;private Object data;public Result() {}public Result(String code, String msg) {this.code = code;this.msg = msg;}public Result(String code, String msg, Object data) {this.code = code;this.msg = msg;this.data = data;}//响应success(无数据返回)public static Result success(){return new Result("200","操作成功");}//响应success(无数据返回)public static Result success(String msg){return new Result("200",msg);}//响应success(有数据返回)public static Result success(Object data) {return new Result("200","操作成功",data);}//响应success(有数据返回)public static Result success(String msg,Object data) {return new Result("200",msg,data);}//响应error(无数据返回)public static Result error(){return new Result("500","操作失败");}//响应error(自定义异常信息提示)public static Result error(String code, String msg){Result result = new Result();result.setCode(code);result.setMsg(msg);return result;}}
3.9 增删改查接口的测试与响应。
<1>http://localhost:8080/student/list。(查询所有)



<2>http://localhost:8080/student/selectById。(根据id查询)


<3>http://localhost:8080/student/save。(新增)



  • 修改配置文件中连接池的空闲检测参数。
  • WARN Druid的日志暂时不需要管。因为这是 Druid 的正常机制,用于清理无效连接,避免连接泄漏。
  • 可以在 application.yml 中修改连接池的空闲检测参数,避免过早关闭正常连接。
spring:datasource:druid:# 配置连接空闲时间(单位:毫秒),默认 30 分钟(1800000ms),可适当延长min-evictable-idle-time-millis: 1800000 # 检测空闲连接的间隔时间(单位:毫秒),默认 60 秒(60000ms)time-between-eviction-runs-millis: 60000 # 申请连接时是否检测有效性(开启后,避免获取到无效连接)test-on-borrow: true 

<4>http://localhost:8080/student/update。(修改)



<5>http://localhost:8080/student/remove。(删除)

http://www.xdnf.cn/news/686.html

相关文章:

  • 深度学习总结(24)
  • idea中导入从GitHub上克隆下来的springboot项目解决找不到主类的问题
  • 【Python爬虫详解】第二篇:HTML结构的基本分析
  • UE虚幻4虚幻5动画蓝图调试,触发FellOutOfWorld事件和打印输出,继续DeepSeek输出
  • OSPF特殊区域
  • 对于在线教育或知识付费类网站视频处理方案
  • INFINI Console 系统集群状态异常修复方案
  • Beszel​​ 轻量级服务器监控平台的详细安装步骤
  • 【某比特币网址请求头部sign签名】RSA加密逆向分析
  • kotlin知识体系(五) :Android 协程全解析,从作用域到异常处理的全面指南
  • 论文阅读:2023 arxiv A Survey of Reinforcement Learning from Human Feedback
  • 机制的作用
  • 【1】云原生,kubernetes 与 Docker 的关系
  • FileZilla“服务器发回了不可路由的地址,使用服务器地址代替
  • 06【流程之舞】控制流:`if/else`, `loop`, `while`, `for` 与模式匹配初窥
  • 深入理解组合实体模式(Composite Entity Pattern)在 C# 中的应用与实现
  • 存储/服务器内存的基本概念简介
  • IPv6 公网设置技巧
  • -实用类-
  • 图例QCPLegend
  • RabbitMQ,添加用户时,出现Erlang cookie不一致,导致添加用户失败的问题解决
  • 使用安全继电器的急停电路设计
  • 基于docker-java封装的工具类
  • 从入门到精通汇编语言 第五章(流程转移与子程序)
  • 【MySQL】数据类型
  • 【OSG学习笔记】Day 4: 相机与视口——控制观察视角
  • 【C++】深入浅出之多态
  • Arduino示例代码讲解:Project 07 - Keyboard 键盘
  • 【AI+HR实战应用】用DeepSeek提升HR工作效能
  • LeetCode[225]用队列实现栈