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:
Kitapları Listeleme:
Kitap Silme ve Silindikten Sonraki Listeleme: