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

使用MyBatis-Plus与Thymeleaf在Spring Boot中实现增删改查

使用MyBatis-Plus和Thymeleaf在Spring Boot项目中实现基本的增删改查(CRUD)功能。Spring Boot作为当前最流行的Java框架之一,结合MyBatis-Plus的强大ORM能力以及Thymeleaf的模板引擎功能,可以高效地开发出动态网站和应用程序。

一、项目准备

1. 创建Spring Boot项目

首先,我们需要在IDE(如IntelliJ IDEA或Eclipse)中创建一个新的Spring Boot项目。可以选择使用Spring Initializr(https://start.spring.io/)来快速生成项目骨架。

2. 添加依赖

在项目的pom.xml文件中,我们需要添加Spring Boot的起步依赖、MyBatis-Plus的依赖、Thymeleaf的依赖以及MySQL的数据库驱动依赖。以下是一个基本的pom.xml配置示例:

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
<!-- MySQL 驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.27</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
</dependencies>

3. 配置数据库

application.ymlapplication.properties文件中配置数据库连接信息。这里以application.yml为例:

spring:
datasource:
url: jdbc:mysql://localhost:3306/aa?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource

二、创建实体类与Mapper接口

1. 实体类

在项目中创建一个实体类,比如User,使用Lombok来简化代码:

import lombok.Data;
@Data
public class User {
private Long id;
private String name;
private String email;
}

2. Mapper接口

使用MyBatis-Plus的Mapper接口来定义数据库操作:

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface UserMapper extends BaseMapper<User> {
// 继承BaseMapper后,MyBatis-Plus已经提供了基本的CRUD方法
}

三、创建Service层

Service层负责业务逻辑处理,可以调用Mapper接口的方法来实现数据库操作:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public User getById(Long id) {
return userMapper.selectById(id);
}
public boolean save(User user) {
return userMapper.insert(user) > 0;
}
}

四、创建Controller层

Controller层负责处理HTTP请求,并调用Service层的方法:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
@Controller
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/add")
public String addPage(Model model) {
return "user/add";
}
@PostMapping("/add")
@ResponseBody
public String add(@RequestBody User user) {
boolean success = userService.save(user);
return success ? "success" : "failed";
}
}

五、创建Thymeleaf模板

src/main/resources/templates/user目录下创建add.html模板,用于用户添加页面:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>添加用户</title>
</head>
<body>
<h2>添加用户</h2>
<form action="/user/add" method="post">
<label for="name">姓名:</label>
<input type="text" id="name" name="name" required><br>
<label for="email">邮箱:</label>
<input type="email" id="email" name="email" required><br>
<input type="submit" value="提交">
</form>
</body>
</html>

六、测试

启动Spring Boot应用,并访问http://localhost:8080/user/add来测试用户添加功能。

以上步骤展示了如何在Spring Boot项目中结合MyBatis-Plus和Thymeleaf来实现基本的增删改查功能。你可以根据具体需求调整和扩展代码。

相关文章:

  • 【CSS】鼠标 、轮廓线 、 滤镜 、 堆叠层级
  • 学习一下怎么用git
  • 阿里云AlibabaCloudLinux php 安装 mysqli 扩展
  • 位运算--(二进制中1的个数)
  • ESP32-定时器中断
  • uniapp vue3 使用echarts绘制图表 柱状图等
  • 缓存穿透 问题(缓存空对象)
  • Java | Leetcode Java题解之第436题寻找右区间
  • Python 如何使用 unittest 模块编写单元测试
  • Vue75 编程式路由导航
  • Azure Data Box 80 TB 现已在中国区正式发布
  • Vue使用axios二次封装、解决跨域问题
  • LabVIEW闪退
  • Java项目实战II基于Java+Spring Boot+MySQL的汽车销售网站(文档+源码+数据库)
  • 2.1 HuggingFists系统架构(一)
  • #Java异常处理
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • Angular 2 DI - IoC DI - 1
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • Effective Java 笔记(一)
  • HTTP那些事
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • Java知识点总结(JavaIO-打印流)
  • MySQL数据库运维之数据恢复
  • python_bomb----数据类型总结
  • Theano - 导数
  • 浮现式设计
  • 前端js -- this指向总结。
  • 前端学习笔记之观察者模式
  • 如何使用 JavaScript 解析 URL
  • 如何选择开源的机器学习框架?
  • 使用parted解决大于2T的磁盘分区
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 扩展资源服务器解决oauth2 性能瓶颈
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • # Redis 入门到精通(九)-- 主从复制(1)
  • #LLM入门|Prompt#3.3_存储_Memory
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (1)Hilt的基本概念和使用
  • (12)Hive调优——count distinct去重优化
  • (2024.6.23)最新版MAVEN的安装和配置教程(超详细)
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (补)B+树一些思想
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (附源码)计算机毕业设计SSM疫情居家隔离服务系统
  • (剑指Offer)面试题34:丑数
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (每日一问)设计模式:设计模式的原则与分类——如何提升代码质量?
  • (三)模仿学习-Action数据的模仿
  • (算法)硬币问题
  • (轉貼) 蒼井そら挑戰筋肉擂台 (Misc)