0% found this document useful (0 votes)
50 views

Spring Boot REST API CRUD Example 1

Spring Boot REST API CRUD Example

Uploaded by

Amit Mathur
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
50 views

Spring Boot REST API CRUD Example 1

Spring Boot REST API CRUD Example

Uploaded by

Amit Mathur
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 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

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 https://www.javaguides.net/p/spring-boot-tutorial.html.

1. Create a Spring Boot Application and Import in IntelliJ


IDEA
You can use the Spring Initializer website (start.spring.io) 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:

https://www.javaguides.net/2022/09/spring-boot-rest-api-crud-example-with-mysql-database.html 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 pom.xml file for your reference:

<?xml version="1.0" encoding="UTF-8"?>


<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.0.0-M4</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>net.javaguides</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>
<java.version>17</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>

https://www.javaguides.net/2022/09/spring-boot-rest-api-crud-example-with-mysql-database.html 2/15
12/9/23, 10:48 AM Spring Boot REST API CRUD Example With MySQL Database
<groupId>org.projectlombok</groupId>
Tutorials Guides Annotations Interview Quizzes
Java Guides <artifactId>lombok</artifactId>
YouTube Udemy MCQs SCE
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<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:

https://www.javaguides.net/2022/09/spring-boot-rest-api-crud-example-with-mysql-database.html 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/application.properties file and add the

following properties to it:

spring.datasource.url=jdbc:mysql://localhost:3306/user_management
spring.datasource.username=root
spring.datasource.password=Mysql@123

spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect
spring.jpa.hibernate.ddl-auto=update

Don’t forget to change the spring.datasource.username and spring.datasource.password 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 spring.jpa.hibernate.ddl-auto = update.

4. Create JPA Entity - User.java


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

https://www.javaguides.net/2022/09/spring-boot-rest-api-crud-example-with-mysql-database.html 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 net.javaguides.springboot.entity;
YouTube Udemy MCQs SCE
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "users")
public class User {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
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 net.javaguides.springboot.repository;

import net.javaguides.springboot.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;

public interface UserRepository extends JpaRepository<User, Long> {


}

https://www.javaguides.net/2022/09/spring-boot-rest-api-crud-example-with-mysql-database.html 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 net.javaguides.springboot.service;

import net.javaguides.springboot.entity.User;

import java.util.List;

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 net.javaguides.springboot.service.impl;

import lombok.AllArgsConstructor;
import net.javaguides.springboot.entity.User;
import net.javaguides.springboot.repository.UserRepository;
import net.javaguides.springboot.service.UserService;
import org.apache.logging.log4j.util.Strings;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

import java.util.List;
import java.util.Objects;
import java.util.Optional;

@Service
@AllArgsConstructor
public class UserServiceImpl implements UserService {

private UserRepository userRepository;

@Override
public User createUser(User user) {
return userRepository.save(user);
}

@Override
public User getUserById(Long userId) {
Optional<User> optionalUser = userRepository.findById(userId);
return optionalUser.get();
}

@Override
public List<User> getAllUsers() {

https://www.javaguides.net/2022/09/spring-boot-rest-api-crud-example-with-mysql-database.html 6/15
12/9/23, 10:48 AM Spring Boot REST API CRUD Example With MySQL Database
return userRepository.findAll();
Tutorials Guides Annotations Interview Quizzes
Java Guides }
YouTube Udemy MCQs SCE

@Override
public User updateUser(User user) {
User existingUser = userRepository.findById(user.getId()).get();
existingUser.setFirstName(user.getFirstName());
existingUser.setLastName(user.getLastName());
existingUser.setEmail(user.getEmail());
User updatedUser = userRepository.save(existingUser);
return updatedUser;
}

@Override
public void deleteUser(Long userId) {
userRepository.deleteById(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 net.javaguides.springboot.controller;

import lombok.AllArgsConstructor;
import net.javaguides.springboot.entity.User;
import net.javaguides.springboot.service.UserService;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@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 = userService.createUser(user);
return new ResponseEntity<>(savedUser, HttpStatus.CREATED);
}

// build get user by id REST API


// http://localhost:8080/api/users/1
@GetMapping("{id}")
public ResponseEntity<User> getUserById(@PathVariable("id") Long userId){
User user = userService.getUserById(userId);
return new ResponseEntity<>(user, HttpStatus.OK);
}

https://www.javaguides.net/2022/09/spring-boot-rest-api-crud-example-with-mysql-database.html 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 // http://localhost:8080/api/users
YouTube Udemy MCQs SCE
@GetMapping
public ResponseEntity<List<User>> getAllUsers(){
List<User> users = userService.getAllUsers();
return new ResponseEntity<>(users, HttpStatus.OK);
}

// Build Update User REST API


@PutMapping("{id}")
// http://localhost:8080/api/users/1
public ResponseEntity<User> updateUser(@PathVariable("id") Long userId,
@RequestBody User user){
user.setId(userId);
User updatedUser = userService.updateUser(user);
return new ResponseEntity<>(updatedUser, HttpStatus.OK);
}

// Build Delete User REST API


@DeleteMapping("{id}")
public ResponseEntity<String> deleteUser(@PathVariable("id") Long userId){
userService.deleteUser(userId);
return new ResponseEntity<>("User successfully deleted!", HttpStatus.OK);
}
}

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 SpringbootRestfulWebservicesApplication.main() method as a standalone Java class that will start the
embedded Tomcat server on port 8080 and point the browser to http://localhost:8080/.

9. Test Spring Boot CRUD REST APIs using Postman Client


Create User REST API:

https://www.javaguides.net/2022/09/spring-boot-rest-api-crud-example-with-mysql-database.html 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:

https://www.javaguides.net/2022/09/spring-boot-rest-api-crud-example-with-mysql-database.html 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:

https://www.javaguides.net/2022/09/spring-boot-rest-api-crud-example-with-mysql-database.html 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

https://www.javaguides.net/2022/09/spring-boot-rest-api-crud-example-with-mysql-database.html 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

https://www.javaguides.net/2022/09/spring-boot-rest-api-crud-example-with-mysql-database.html 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

https://www.javaguides.net/2022/09/spring-boot-rest-api-crud-example-with-mysql-database.html 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 - https://www.udemy.com/user/ramesh-fadatare/

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

https://www.javaguides.net/2022/09/spring-boot-rest-api-crud-example-with-mysql-database.html 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

https://www.javaguides.net/2022/09/spring-boot-rest-api-crud-example-with-mysql-database.html 15/15

You might also like