Open In App

Spring Boot Integration With MySQL as a Maven Project

Improve
Improve
Like Article
Like
Save
Share
Report

Spring Boot is trending and it is an extension of the spring framework but it reduces the huge configuration settings that need to be set in a spring framework. In terms of dependencies, it reduces a lot and minimized the dependency add-ons. It extends maximum support to all RDBMS databases like MySQL and NoSQL databases like MongoDB. In this article let us see a sample project connecting Spring Boot and MySQL.

Implementation

Project Structure:

Project Structure

 

This is a maven project

pom.xml

XML




<?xml version="1.0" encoding="UTF-8"?>
         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>2.7.0</version>
        <relativePath/>
    </parent>
    <groupId>com.gfg</groupId>
    <artifactId>springboot_mysql_project</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot_mysql_project</name>
    <description>Demo project for Spring Boot with MySQL</description>
    <properties>
        <java.version>1.8</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>
        <!-- MySQL dependency -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </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>
            </plugin>
        </plugins>
    </build>
  
</project>


The important file that helps to tell about MySQL connectivity information

spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql://localhost:3306/geeksforgeeks?serverTimezone=UTC&useSSL=false&autoReconnect=true
spring.datasource.username=****#Specify the proper user name
spring.datasource.password=****#Specify the proper password then only the application can be connected with MySQL

Spring boot can be run as Java application, which means there should be the main class

SampleAccessingOfMysqlApplication.java

Java




import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
  
@SpringBootApplication
public class SampleAccessingOfMysqlApplication {
    public static void main(String[] args) {
        SpringApplication.run(SampleAccessingOfMysqlApplication.class, args);
    }
}


Let us start with the bean class

Book.java

Java




import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
  
// This tells Hibernate to make
// a table out of this class
@Entity 
public class Book {
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Integer id;
  
    private String bookName;
  
    private String isbnNumber;
  
    public String getBookName() {
        return bookName;
    }
  
    public void setBookName(String bookName) {
        this.bookName = bookName;
    }
  
    public String getIsbnNumber() {
        return isbnNumber;
    }
  
    public void setIsbnNumber(String isbnNumber) {
        this.isbnNumber = isbnNumber;
    }
  
    public Integer getId() {
        return id;
    }
  
    public void setId(Integer id) {
        this.id = id;
    }
      
}


BookRepository.java

Java




package com.gfg;
  
import org.springframework.data.repository.CrudRepository;
  
// This will be AUTO IMPLEMENTED by Spring
// into a Bean called Book
// CRUD refers Create, Read, Update, Delete
public interface BookRepository extends CrudRepository<Book, Integer> {
  
}


BookController.java

Java




import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
  
// This means that this 
// class is a Controller
@Controller    
  
// This means URL's start with /geek (after Application path)
@RequestMapping(path="/geek"
public class BookController {
    
    // This means to get the bean called geekuserRepository
    // Which is auto-generated by Spring, we will use it
      // to handle the data
    @Autowired 
    private BookRepository bookRepository;
  
    // Map ONLY POST Requests
    @PostMapping(path="/addbook"
    public @ResponseBody String addBooks (@RequestParam String bookName
            , @RequestParam String isbnNumber) {
        
        // @ResponseBody means the returned String
          // is the response, not a view name
        // @RequestParam means it is a parameter
          // from the GET or POST request
        
        Book book = new Book();
        book.setBookName(bookName);
        book.setIsbnNumber(isbnNumber);
        bookRepository.save(book);
        return "Details got Saved";
    }
  
    @GetMapping(path="/books")
    public @ResponseBody Iterable<Book> getAllUsers() {
        // This returns a JSON or XML with the Book
        return bookRepository.findAll();
    }
}


The application can be run as follows :

 

Console Output:

 

Now we can run and see the following. As we are entering the book details via POST, let us use the Postman client to execute the same

http://localhost:8080/geek/addbook
--Note : In the controller, it has been given that all urls should have geek as pattern
and after that 'addbook' is the mapping that helps to add the books to the table named 'book'.
As in application.properties,
spring.jpa.hibernate.ddl-auto=update
is available, if there is no table named 'book' is present, it is automatically created

 

We can check the same by executing the below URL

http://localhost:8080/geek/books

 

Similarly, we can add the books we want and can add

 

Let us check the same in MySQL as well

 

So it is easier to connect MySQL and Spring Boot. Efficiently we can integrate spring boot and MySQL as in the above sample project.



Last Updated : 09 Oct, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads