12/9/23, 10:48 AM Spring Boot REST API CRUD Example With MySQL Database
Tutorials Guides Annotations Interview Quizzes
Java Guides
YouTube Udemy MCQs SCE
Check out my 10+ Udemy bestseller courses and discount coupons: Udemy Courses - Ramesh Fadatare
Java JavaEE Library REST Spring Boot Microservices Full Stack YouTube UI Quiz Hibernate DB Programs
Kotlin Python Me
NEW PRICE DRO
Tote Bags | Crossbody Bags
DailyObjects
Spring Boot REST API CRUD Example With MySQL
Database
author: Ramesh Fadatare
MYSQL SPRING BOOT SPRING BOOT 3 SPRING DATA JPA TUTORIAL
This tutorial will teach you how to build CRUD REST APIs using Spring Boot 3, Spring Data JPA, and MySQL Database.
We’ll first build the APIs to create, retrieve, update and delete a user, then test them using postman.
Note that we are using the latest version of Spring boot which is version 3.
Learn Spring boot at [Link]
1. Create a Spring Boot Application and Import in IntelliJ
IDEA
You can use the Spring Initializer website ([Link]) or the Spring Boot CLI to generate a new Spring Boot project with
the necessary dependencies.
Refer to the below screenshot to enter details while creating the spring boot application using the spring initializr:
[Link] 1/15
12/9/23, 10:48 AM Spring Boot REST API CRUD Example With MySQL Database
Tutorials Guides Annotations Interview Quizzes
Java Guides
YouTube Udemy MCQs SCE
Click on Generate button to download the Spring boot project as a zip file. Unzip the zip file and import the Spring boot project
in IntelliJ IDEA.
Here is the [Link] file for your reference:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="[Link] xmlns:xsi="[Link]
xsi:schemaLocation="[Link] [Link]
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>[Link]</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.0.0-M4</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>[Link]</groupId>
<artifactId>springboot-restful-webservices</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot-restful-webservices</name>
<description>Demo project for Spring Boot Restful Webservices</description>
<properties>
<[Link]>17</[Link]>
</properties>
<dependencies>
<dependency>
<groupId>[Link]</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>[Link]</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
[Link] 2/15
12/9/23, 10:48 AM Spring Boot REST API CRUD Example With MySQL Database
<groupId>[Link]</groupId>
Tutorials Guides Annotations Interview Quizzes
Java Guides <artifactId>lombok</artifactId>
YouTube Udemy MCQs SCE
<optional>true</optional>
</dependency>
<dependency>
<groupId>[Link]</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>[Link]</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>[Link]</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>[Link]
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>[Link]
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</project>
2. Project Structure
Refer to the below screenshot to create a project structure or a packing structure for our Spring boot application:
[Link] 3/15
12/9/23, 10:48 AM Spring Boot REST API CRUD Example With MySQL Database
Tutorials Guides Annotations Interview Quizzes
Java Guides
YouTube Udemy MCQs SCE
3. Configuring MySQL Database
Since we’re using MySQL as our database, we need to configure the URL, username, and password so that our Spring boot can
establish a connection with the database on startup. Open the src/main/resources/[Link] file and add the
following properties to it:
[Link]=jdbc:mysql://localhost:3306/user_management
[Link]=root
[Link]=Mysql@123
[Link]=[Link]
[Link]-auto=update
Don’t forget to change the [Link] and [Link] as per your MySQL installation.
Also, create a database named user_management in MySQL before proceeding to the next section.
You don’t need to create any tables. The tables will automatically be created by Hibernate from the User entity that we will
define in the next step. This is made possible by the property [Link]-auto = update.
4. Create JPA Entity - [Link]
An Entity is a plain old Java object (POJO) that represents the data you want to store. You will need to annotate the class with
@Entity and define the fields of the class along with the getters and setters for each field.
Let's create a User JPA entity class with the following fields:
id - primary key
firstName - user first name
lastName - user last name
email - user email ID
[Link] 4/15
12/9/23, 10:48 AM Spring Boot REST API CRUD Example With MySQL Database
Tutorials Guides Annotations Interview Quizzes
Java Guides package [Link];
YouTube Udemy MCQs SCE
import [Link].*;
import [Link];
import [Link];
import [Link];
import [Link];
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = [Link])
private Long id;
@Column(nullable = false)
private String firstName;
@Column(nullable = false)
private String lastName;
@Column(nullable = false, unique = true)
private String email;
}
Note that we are using Lombok annotations to reduce the boilerplate code such as getter/setter methods, and constructors.
We are using below JPA annotations to map an Entity with a database table:
@Entity annotation is used to mark the class as a persistent Java class.
@Table annotation is used to provide the details of the table that this entity will be mapped to.
@Id annotation is used to define the primary key.
@GeneratedValue annotation is used to define the primary key generation strategy. In the above case, we have declared the
primary key to be an Auto Increment field.
@Column annotation is used to define the properties of the column that will be mapped to the annotated field. You can define
several properties like name, length, nullable, updateable, etc.
5. Create Spring Data JPA Repository for User JPA Entity
Let's create a UserRepository to access the User's data from the database.
Well, Spring Data JPA comes with a JpaRepository interface that defines methods for all the CRUD operations on the entity,
and a default implementation of JpaRepository called SimpleJpaRepository .
package [Link];
import [Link];
import [Link];
public interface UserRepository extends JpaRepository<User, Long> {
}
[Link] 5/15
12/9/23, 10:48 AM Spring Boot REST API CRUD Example With MySQL Database
6. Service Layer Implementation
Java Guides
Tutorials
YouTube
Guides Annotations Interview Quizzes
Udemy MCQs SCE
This layer will contain the business logic for the API and will be used to perform CRUD operations using the Repository.
UserService Interface
package [Link];
import [Link];
import [Link];
public interface UserService {
User createUser(User user);
User getUserById(Long userId);
List<User> getAllUsers();
User updateUser(User user);
void deleteUser(Long userId);
}
UserServiceImpl Class
package [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
@Service
@AllArgsConstructor
public class UserServiceImpl implements UserService {
private UserRepository userRepository;
@Override
public User createUser(User user) {
return [Link](user);
}
@Override
public User getUserById(Long userId) {
Optional<User> optionalUser = [Link](userId);
return [Link]();
}
@Override
public List<User> getAllUsers() {
[Link] 6/15
12/9/23, 10:48 AM Spring Boot REST API CRUD Example With MySQL Database
return [Link]();
Tutorials Guides Annotations Interview Quizzes
Java Guides }
YouTube Udemy MCQs SCE
@Override
public User updateUser(User user) {
User existingUser = [Link]([Link]()).get();
[Link]([Link]());
[Link]([Link]());
[Link]([Link]());
User updatedUser = [Link](existingUser);
return updatedUser;
}
@Override
public void deleteUser(Long userId) {
[Link](userId);
}
}
7. Creating UserController - Building CRUD Rest APIs
The controller is responsible for handling incoming HTTP requests and returning the appropriate response. You will need to
define the endpoints of the API and map them to the appropriate methods in the Service layer.
Let's create the REST APIs for creating, retrieving, updating, and deleting a User :
package [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link].*;
import [Link];
@RestController
@AllArgsConstructor
@RequestMapping("api/users")
public class UserController {
private UserService userService;
// build create User REST API
@PostMapping
public ResponseEntity<User> createUser(@RequestBody User user){
User savedUser = [Link](user);
return new ResponseEntity<>(savedUser, [Link]);
}
// build get user by id REST API
// [Link]
@GetMapping("{id}")
public ResponseEntity<User> getUserById(@PathVariable("id") Long userId){
User user = [Link](userId);
return new ResponseEntity<>(user, [Link]);
}
[Link] 7/15
12/9/23, 10:48 AM Spring Boot REST API CRUD Example With MySQL Database
// Build Get All Users REST API
Tutorials Guides Annotations Interview Quizzes
Java Guides // [Link]
YouTube Udemy MCQs SCE
@GetMapping
public ResponseEntity<List<User>> getAllUsers(){
List<User> users = [Link]();
return new ResponseEntity<>(users, [Link]);
}
// Build Update User REST API
@PutMapping("{id}")
// [Link]
public ResponseEntity<User> updateUser(@PathVariable("id") Long userId,
@RequestBody User user){
[Link](userId);
User updatedUser = [Link](user);
return new ResponseEntity<>(updatedUser, [Link]);
}
// Build Delete User REST API
@DeleteMapping("{id}")
public ResponseEntity<String> deleteUser(@PathVariable("id") Long userId){
[Link](userId);
return new ResponseEntity<>("User successfully deleted!", [Link]);
}
}
8. Running the Application
We have successfully developed all the CRUD Rest APIs for the User model. Now it's time to deploy our application in a servlet
container(embedded tomcat).
Two ways we can start the standalone Spring boot application.
1. From the root directory of the application and type the following command to run it -
$ mvn spring-boot:run
2. From your IDE, run the [Link]() method as a standalone Java class that will start the
embedded Tomcat server on port 8080 and point the browser to [Link]
9. Test Spring Boot CRUD REST APIs using Postman Client
Create User REST API:
[Link] 8/15
12/9/23, 10:48 AM Spring Boot REST API CRUD Example With MySQL Database
Tutorials Guides Annotations Interview Quizzes
Java Guides
YouTube Udemy MCQs SCE
Get Single User REST API:
Update User REST API:
[Link] 9/15
12/9/23, 10:48 AM Spring Boot REST API CRUD Example With MySQL Database
Tutorials Guides Annotations Interview Quizzes
Java Guides
YouTube Udemy MCQs SCE
Get All Users REST API:
Delete User REST API:
[Link] 10/15
12/9/23, 10:48 AM Spring Boot REST API CRUD Example With MySQL Database
Tutorials Guides Annotations Interview Quizzes
Java Guides
YouTube Udemy MCQs SCE
10. Conclusion
Congratulations guys! We successfully built a Restful CRUD API using Spring Boot 3, Spring Data JPA, and MySQL database.
Related Spring and Spring Boot Tutorials/Guides:
Spring Boot Tutorials [500+] Spring Boot Testing Tutorial Spring Boot Microservice Tutorial
Spring Boot Kafka Microservices Spring Boot + Apache Kafka Tutorial Spring Core Tutorial
Spring MVC Tutorial Spring Data JPA Tutorial Spring Framework For Beginners Spring AOP Tutorial
Spring Security Tutorial Spring Exceptions Tutorial Spring Boot Interview Questions
Spring Boot Microservices Interview Questions Apache Kafka Tutorials Docker Tutorials And Guides
Spring Boot RabbitMQ Tutorials Angular CRUD Example With Spring Boot
Spring Boot + Angular 12 CRUD Full Stack Spring Boot + Angular 8 CRUD Full Stack
Spring Boot + Angular 10 CRUD Full Stack Spring Boot + React JS CRUD Full Stack
React JS ( React Hooks) + Spring Boot Spring Boot Thymeleaf CRUD Full Stack
Spring Boot User Registration And Login Node Js + Express + MongoDB CRUD
Vue JS + Spring Boot REST API Tutorial
[Link] 11/15
12/9/23, 10:48 AM Spring Boot REST API CRUD Example With MySQL Database
Tutorials Guides Annotations Interview Quizzes
Java Guides
YouTube Udemy MCQs SCE
ZERO processing fee on
loan
Ad IndusInd Bank
MYSQL SPRING BOOT SPRING BOOT 3 SPRING DATA JPA TUTORIAL
To leave a comment, click the button below to sign in with Blogger.
SIGN IN WITH BLOGGER
Dev Tools / Utilities
Spring Boot Code Generator
Java JDBC Code Generator
Online JWT Generator
Online JWT Decoder
Online JSON Viewer
Online JSON Validator
Online HTML Formatter
Base64 Encode Online
Base64 Decode Online
URL Encoder Online
URL Decoder Online
Online SQL Formatter
Online HTML Compiler
Online CSS Formatter
Online JSON Parser
HTML Escape / Unescape Online
XML Escape / Unescape Online
SQL Escape / Unescape Online
JSON Escape / Unescape Online
JavaScript Escape / Unescape Online
Java Escape / Unescape Online
Properties to YAML Converter Online
Subscriber to my top YouTube Channel (120K+ Subscribers)
Java Guides
YouTube 130K
My Udemy Course: Building Microservices with Spring Boot and
Spring Cloud
[Link] 12/15
12/9/23, 10:48 AM Spring Boot REST API CRUD Example With MySQL Database
Tutorials Guides Annotations Interview Quizzes
Java Guides
YouTube Udemy MCQs SCE
My Udemy Course - Building Real-Time REST APIs with Spring
Boot
My Udemy Course - Testing Spring Boot Application with JUnit
and Mockito
My Udemy Course - Master Spring Data JPA with Hibernate
Spring Boot Thymeleaf Real-Time Web Application Course
[Link] 13/15
12/9/23, 10:48 AM Spring Boot REST API CRUD Example With MySQL Database
Tutorials Guides Annotations Interview Quizzes
Java Guides My Udemy Course - Spring Boot RabbitMQ Course - Event-
Driven Microservices YouTube Udemy MCQs SCE
My Udemy Course - Spring Boot + Apache Kafka Course
About Me
Hi, I am Ramesh Fadatare. I am VMWare Certified
Professional for Spring and Spring Boot 2022.
I am the founder and author of this blog website
JavaGuides, a technical blog dedicated to the
Java/Java EE technologies and Full-Stack Java
development.
All the articles, guides, and tutorials(2.5K +) written by me so
connect with me if you have any questions/queries. Read more
about me at About Me.
Top YouTube Channel (125K+ Subscribers): Check out my
YouTube channel for free videos and courses - Java Guides YouTube
Channel
My Udemy Courses - [Link]
Connect with me on Twitter, Facebook, LinkedIn, GitHub,
andStackOverflow
Follow Me on Twitter
Follow
Facebook Likes and Shares
23K people are
Follow Share following this.
Free Courses on YouTube Top Tutorials Top Quizzes
Learn Spring Boot Learn Java Java Quiz
[Link] 14/15
12/9/23, 10:48 AM Spring Boot REST API CRUD Example With MySQL Database
Learn Spring Boot 3 Learn Java 8 Java 8 Quiz
Tutorials Guides Annotations Interview Quizzes
Java Guides
Learn Spring MVC Learn Spring Boot Java Coding Quiz
YouTube Udemy MCQs SCE
Learn Spring Data JPA Learn Spring Framework Spring Boot Quiz
Learn Spring Boot React Learn Spring MVC Spring Quiz
Learn Java Collections Learn Spring Security Spring MVC Quiz
Learn Java 8 in 4 Hours Learn Spring Data JPA Spring Data JPA Quiz
Learn 25+ Spring Boot Annotations Learn Spring Annotations Hibernate Quiz
Spring Boot Kafka Microservices Learn Microservices Miroservices Quiz
Learn Building Spring Boot Projects Learn REST API REST API Quiz
Learn Spring Boot REST API Learn JPA JavaScript Quiz
Learn Event-Driven Microservices Learn Hibernate ORM JavaScript Coding Quiz
Learn Spring Boot + Kafka Learn JSP React JS Quiz
Learn Spring Boot + Angular Learn Servlet Kotlin Quiz
Learn Spring Boot + Thymeleaf Learn JUnit SQL Quiz
Learn Thymeleaf CSS Quiz
JSON Quiz
My Bestseller Udemy Courses
Spring 6 and Spring Boot 3 for Beginners (Includes Projects)
Building Real-Time REST APIs with Spring Boot
Building Microservices with Spring Boot and Spring Cloud
Full-Stack Java Development with Spring Boot 3 & React
Testing Spring Boot Application with JUnit and Mockito
Master Spring Data JPA with Hibernate
Spring Boot + Apache Kafka - The Quickstart Practical Guide
Spring Boot + RabbitMQ (Includes Event-Driven Microservices)
Spring Boot Thymeleaf Real-Time Web Application - Blog App
Copyright © 2018 - 2025 Java Guides All rights reversed | Privacy Policy | Contact | About Me | YouTube | GitHub
Powered by Blogger
[Link] 15/15