Spring Boot MySQL ile Veri İşlemleri

Spring Boot MySQL ile veri işlemleri, modern web uygulamalarını geliştirmek ve veritabanı işlemlerini kolayca yönetmek için güçlü bir çözüm sunar. Günümüzde, Spring Boot’un sunduğu kolaylık ve hız ile birlikte MySQL veritabanını kullanarak veri işlemleri gerçekleştirmek, geliştiriciler için önemli bir gerekliliktir. Bu yazıda, Spring Boot ve MySQL veritabanı entegrasyonunu anlatarak, uygulamanızda veri depolama, sorgulama ve güncelleme işlemlerini nasıl gerçekleştireceğinizi inceleyeceğiz.

Spring Boot MySQL – Bağımlılıklarımızı Tanımlayalım

Spring Boot MySQL projemiz için Spring Web ve MySQL-Connector bağımlılıkları ekleyelim. Ayrıca Getter, Setter, Constructor gibi yapıları oluşturamak için Lombok kütüphanesini de ekleyeceğim.

<?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>2.4.0</version>
        <relativePath/>
    </parent>
    <groupId>com.codingbytime</groupId>
    <artifactId>mysql</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>mysql</name>
    <description>Demo project for Spring Boot</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>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.16</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

Docker ile MySQL Container Oluşturalım

Hazırda MySQL kurulumunuz  varsa geçebilirsiniz.

docker run --name codingbytime-mysql -e MYSQL_ROOT_PASSWORD=123 -e MYSQL_DATABASE=test -p 3306:3306 mysql

Entity Oluşturalım

Kitapları tutacağımız bir entity yapısı oluşturacağım. Id, Title ve ISBN variable’ları olacak. Lombok ile de Getter,Setter ve ToString tanımlamalarını yapacağım.

package com.codingbytime.mysql.entity;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import javax.persistence.*;

@Entity
@Getter
@Setter
@ToString
public class Book {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "Title")
    private String title;

    @Column(name = "ISBN")
    private Long isbn;
}

Repository Oluşturalım

Veritabanı işlemleri için JpaRepository kullanacağım. Bunun için BookRepository interface’i oluşturalım.

package com.codingbytime.mysql.repository;

import com.codingbytime.mysql.entity.Book;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface BookRepository extends JpaRepository<Book, Long> {
}

Controller Oluşturalım

Controller’ımız içerisinde Create, Read ve Delete işlemleri yapacak 3 adet metod tanımladık. Bunların kullanımı ile alakalı görselleri de yazının devamında ekleyeceğim.

package com.codingbytime.mysql.controller;

import com.codingbytime.mysql.entity.Book;
import com.codingbytime.mysql.repository.BookRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;

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

@RestController
@RequestMapping("/")
@RequiredArgsConstructor
public class CrudController {
    private final BookRepository bookRepository;

    @GetMapping("/new")
    public Book addNewBook(@RequestParam String title, @RequestParam Long isbn) {
        if (title != null && isbn != null) {
            Book book = new Book();
            book.setTitle(title);
            book.setIsbn(isbn);
            Book saved = bookRepository.save(book);
            return saved;
        }
        return new Book();
    }

    @GetMapping("/list")
    public List<Book> test() {
        return bookRepository.findAll();
    }

    @GetMapping("/delete/{id}")
    public String deleteBook(@PathVariable Long id) {
        Optional<Book> search = bookRepository.findById(id);
        if (search.isPresent()) {
            bookRepository.deleteById(id);
            return "silindi";
        }
        return String.format("bu id %d ile kayit bulunamadi", id);
    }
}

MySQL İçin Bağlantı Ayarları

Resources klasörü altında ki application.properties dosyamız içerisine bu bilgileri girelim. Eğer yukarıda ki docker komutu ile kurmadıysanız kendi ayarlarınıza göre doldurunuz:

spring.jpa.hibernate.ddl-auto=create
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=123

Projemizi Çalıştıralım

Yeni kitap oluşturma:

Yeni kitap oluşturma

Kitapları Listeleme:

Kitap Silme ve Silindikten Sonraki Listeleme:

Spring Boot MySQL

More Reading

Post navigation