Learn how to connect to mysql database using spring boot framework. In this article you will learn the different types of @GetMapping/ @PostMapping / @PutMapping and @DeleteMapping Usages and their components @RestController, @Service, @Repository and @Entity.
Goto Spring Initializer https://start.spring.io/ and add the following dependencies like Spring web, JPA, lombok and mysql driver similar to below image
Generate the boilerplate code and open the project into your IDE.
Follow the below screenshot and create the respective packages to maintain your code easily.
Lets Create the follow classes
UserController.java
package com.hakeemit.database.controller;
import com.hakeemit.database.entity.User;
import com.hakeemit.database.entity.UserDetails;
import com.hakeemit.database.service.UserServices;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
public class UserController {
@Autowired
private UserServices userServices;
@GetMapping("/findAll")
public List getAllUser(){
return userServices.getAllUser();
}
@PostMapping("/add")
public User add(@RequestBody UserDetails userDetails){
return userServices.add(userDetails);
}
@PutMapping("/update")
public User update(@RequestBody UserDetails userDetails){
return userServices.update(userDetails);
}
@DeleteMapping("/delete/{id}")
public String delete(@PathVariable int id){
return userServices.delete(id);
}
}
UserServices.java
package com.hakeemit.database.service;
import com.hakeemit.database.entity.User;
import com.hakeemit.database.entity.UserDetails;
import com.hakeemit.database.repositories.UserRepositories;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Optional;
@Service
public class UserServices {
@Autowired
private UserRepositories userRepositories;
public List getAllUser(){
return userRepositories.findAll();
}
public User add(UserDetails userDetails){
User user = new User();
user.setName(userDetails.getName());
user.setGender(userDetails.getGender());
user.setEmailId(userDetails.getEmailId());
return userRepositories.save(user);
}
public User update(UserDetails userDetails){
Optional user = userRepositories.findById(userDetails.getId());
if(user.isPresent()) {
user.get().setName(userDetails.getName());
user.get().setGender(userDetails.getGender());
user.get().setEmailId(userDetails.getEmailId());
return userRepositories.save(user.get());
}
return null;
}
public String delete(int id){
Optional user = userRepositories.findById(id);
if(user.isPresent()) {
userRepositories.delete(user.get());
return "Deleted";
}
return "Failed to delete";
}
}
UserRepositories.java
package com.hakeemit.database.repositories;
import com.hakeemit.database.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface UserRepositories extends JpaRepository {
}
User.java
package com.hakeemit.database.entity;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import lombok.Getter;
import lombok.Setter;
@Entity
@Getter
@Setter
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String name;
private String gender;
private String emailId;
}
UserDetails.java
package com.hakeemit.database.entity;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class UserDetails {
private int id;
private String name;
private String gender;
private String emailId;
}
application.properties
spring.application.name=database
# ========== Database Configuration ==========
spring.datasource.url=jdbc:mysql://localhost:3306/tutorial?useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=admin123
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# ========== JPA Configuration ==========
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect
Watch the below video to understand the flow of code and for sending the payload details using
postman
Video Tutorials
Comments
Post a Comment