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

【SpringBoot】使用Spring Boot、MyBatis-Plus和MySQL来实现增删改查操作,并添加自定义SQL查询。

使用Spring Boot、MyBatis-Plus和MySQL来实现增删改查操作,并添加自定义SQL查询。

1. 创建Spring Boot项目

你可以使用Spring Initializr来创建一个新的Spring Boot项目。在选择依赖项时,确保选择以下内容:

  • Spring Web
  • MyBatis-Plus Boot Starter
  • MySQL Driver
  • Lombok(用于简化Java代码)

2. 添加依赖

如果你使用的是Maven,确保在pom.xml中添加以下依赖:

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.3.4</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency>
</dependencies>

3. 配置数据库连接

src/main/resources/application.properties中配置数据库连接信息。

spring.datasource.url=jdbc:mysql://localhost:3306/your_database?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
spring.datasource.username=your_username
spring.datasource.password=your_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Drivermybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
mybatis.mapper-locations=classpath:mapper/*.xml

4. 创建实体类

src/main/java/com/example/demo/entity目录下创建一个实体类,例如User

package com.example.demo.entity;import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;@Data
@TableName("user")
public class User {@TableIdprivate Long id;private String name;private Integer age;private String email;
}

5. 创建Mapper接口

src/main/java/com/example/demo/mapper目录下创建一个Mapper接口,继承BaseMapper。这里同时给出使用注解和XML两种方式,二选一。

使用注解的方式

package com.example.demo.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.demo.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;import java.util.List;@Mapper
public interface UserMapper extends BaseMapper<User> {@Select("SELECT * FROM user WHERE age > #{age}")List<User> selectUsersOlderThan(@Param("age") int age);
}

使用XML文件的方式

首先,在src/main/resources/mapper目录下创建一个XML文件,例如UserMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.example.demo.mapper.UserMapper"><select id="selectUsersOlderThan" resultType="com.example.demo.entity.User">SELECT * FROM user WHERE age > #{age}</select>
</mapper>

然后,在UserMapper接口中添加与XML文件中定义的方法一致的方法签名。

package com.example.demo.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.demo.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;import java.util.List;@Mapper
public interface UserMapper extends BaseMapper<User> {List<User> selectUsersOlderThan(@Param("age") int age);
}

6. 创建Service类

src/main/java/com/example/demo/service目录下创建一个Service接口。

package com.example.demo.service;import com.baomidou.mybatisplus.extension.service.IService;
import com.example.demo.entity.User;import java.util.List;public interface UserService extends IService<User> {List<User> getUsersOlderThan(int age);
}

src/main/java/com/example/demo/service/impl目录下创建Service实现类。

package com.example.demo.service.impl;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.demo.entity.User;
import com.example.demo.mapper.UserMapper;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {@Autowiredprivate UserMapper userMapper;@Overridepublic List<User> getUsersOlderThan(int age) {return userMapper.selectUsersOlderThan(age);}
}

7. 创建Controller类

src/main/java/com/example/demo/controller目录下创建一个Controller类,用于处理HTTP请求。

package com.example.demo.controller;import com.example.demo.entity.User;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;import java.util.List;@RestController
@RequestMapping("/users")
public class UserController {@Autowiredprivate UserService userService;@GetMappingpublic List<User> getAllUsers() {return userService.list();}@GetMapping("/{id}")public User getUserById(@PathVariable Long id) {return userService.getById(id);}@PostMappingpublic boolean createUser(@RequestBody User user) {return userService.save(user);}@PutMapping("/{id}")public boolean updateUser(@PathVariable Long id, @RequestBody User user) {user.setId(id);return userService.updateById(user);}@DeleteMapping("/{id}")public boolean deleteUser(@PathVariable Long id) {return userService.removeById(id);}@GetMapping("/older-than/{age}")public List<User> getUsersOlderThan(@PathVariable int age) {return userService.getUsersOlderThan(age);}
}

8. 创建数据库表

确保在MySQL数据库中创建对应的表。例如:

CREATE TABLE `user` (`id` BIGINT NOT NULL AUTO_INCREMENT,`name` VARCHAR(50) NOT NULL,`age` INT NOT NULL,`email` VARCHAR(50),PRIMARY KEY (`id`)
);

9. 启动应用

确保所有配置和代码都正确,然后运行Spring Boot应用。你可以通过以下命令来启动应用:

mvn spring-boot:run

10. 测试API

你现在可以通过HTTP请求来访问和操作用户数据。以下是一些示例请求:

获取所有用户

curl -X GET http://localhost:8080/users

获取特定用户

curl -X GET http://localhost:8080/users/1

创建新用户

curl -X POST http://localhost:8080/users -H "Content-Type: application/json" -d '{"name":"John Doe","age":30,"email":"john.doe@example.com"}'

更新用户

curl -X PUT http://localhost:8080/users/1 -H "Content-Type: application/json" -d '{"name":"Jane Doe","age":25,"email":"jane.doe@example.com"}'

删除用户

curl -X DELETE http://localhost:8080/users/1

获取年龄大于特定值的用户

curl -X GET http://localhost:8080/users/older-than/30

通过这些步骤,你可以在Spring Boot项目中使用MyBatis-Plus和MySQL实现增删改查操作,并添加自定义SQL查询。这样,你不仅可以利用MyBatis-Plus的简洁性,还能灵活地支持复杂的SQL查询。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • java整合modbusRTU与modbusTCP
  • BUG——GT911上电后中断一直触发
  • RK3588——网口实时传输视频
  • 什么是深拷贝
  • ubuntu20 vmware硬盘空间不够,进行扩容,实操成功!
  • 通俗易懂 serverless 架构、微服务架构和云原生架构,并简单代码
  • UltraISO制作Centos7.X系统U盘启动
  • 2024年入职/转行网络安全,该如何规划?_网络安全职业规划
  • Docker的介绍、保姆级安装和使用
  • 数据库学习(进阶)
  • LoginFormDTO
  • iOS18 Beta7 最终测试版推送:苹果的又一次技术飞跃
  • HTTP 之 HTTP/1.0、HTTP/1.1和HTTP2的缓存策略(六)
  • [数据集][目标检测]起子检测数据集VOC+YOLO格式1215张1类别
  • 在Excel中“直接引用”字符串地址
  • Apache Zeppelin在Apache Trafodion上的可视化
  • extract-text-webpack-plugin用法
  • JAVA_NIO系列——Channel和Buffer详解
  • JavaScript DOM 10 - 滚动
  • SQLServer之创建数据库快照
  • Sublime text 3 3103 注册码
  • 闭包--闭包作用之保存(一)
  • 给github项目添加CI badge
  • 记录:CentOS7.2配置LNMP环境记录
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 类orAPI - 收藏集 - 掘金
  • 每天一个设计模式之命令模式
  • 面试总结JavaScript篇
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 最近的计划
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • ​configparser --- 配置文件解析器​
  • # windows 安装 mysql 显示 no packages found 解决方法
  • (¥1011)-(一千零一拾一元整)输出
  • (C#)一个最简单的链表类
  • (floyd+补集) poj 3275
  • (Java入门)抽象类,接口,内部类
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (八十八)VFL语言初步 - 实现布局
  • (超详细)语音信号处理之特征提取
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (六)Hibernate的二级缓存
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (三)mysql_MYSQL(三)
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (转)EXC_BREAKPOINT僵尸错误
  • (转)大型网站架构演变和知识体系
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .libPaths()设置包加载目录
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?
  • .NET/C# 使用 #if 和 Conditional 特性来按条件编译代码的不同原理和适用场景