To create a full CRUD (Create, Read, Update, Delete) application using Spring Boot with a MariaDB database, follow these steps:
### Prerequisites
No content.
No content.
### Step 1: Set Up Spring Boot Project
Use Spring Initializr (https://start.spring.io/) to create a Spring Boot project and include the following dependencies:
- Spring Web
- Spring Data JPA
- MariaDB Driver
### Step 2: Configure `application.properties`
Configure the database connection settings in `src/main/resources/application.properties`:
```properties
spring.datasource.url=jdbc:mariadb://localhost:3306/yourdatabase
spring.datasource.username=yourusername
spring.datasource.password=yourpassword
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
```
### Step 3: Create Entity Class
Create an entity class that maps to a table in the database.
```java
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
@Entity
public class Item {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String description;
// Getters and setters
}
```
### Step 4: Define Repository Interface
Create a repository interface that extends `JpaRepository`.
```java
import org.springframework.data.jpa.repository.JpaRepository;
public interface ItemRepository extends JpaRepository<Item, Long> {
}
```
### Step 5: Create Service Class
Implement a service class to handle business logic.
```java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Optional;
@Service
public class ItemService {
@Autowired
private ItemRepository itemRepository;
public List<Item> getAllItems() {
return itemRepository.findAll();
}
public Optional<Item> getItemById(Long id) {
return itemRepository.findById(id);
}
public Item saveItem(Item item) {
return itemRepository.save(item);
}
public void deleteItem(Long id) {
itemRepository.deleteById(id);
}
}
```
### Step 6: Create Controller Class
Create a REST controller for handling HTTP requests.
```java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/items")
public class ItemController {
@Autowired
private ItemService itemService;
@GetMapping
public List<Item> getAllItems() {
return itemService.getAllItems();
}
@GetMapping("/{id}")
public ResponseEntity<Item> getItemById(@PathVariable Long id) {
return itemService.getItemById(id)
.map(ResponseEntity::ok)
.orElse(ResponseEntity.notFound().build());
}
@PostMapping
public Item createItem(@RequestBody Item item) {
return itemService.saveItem(item);
}
@PutMapping("/{id}")
public ResponseEntity<Item> updateItem(@PathVariable Long id, @RequestBody Item itemDetails) {
return itemService.getItemById(id)
.map(item -> {
item.setName(itemDetails.getName());
item.setDescription(itemDetails.getDescription());
return ResponseEntity.ok(itemService.saveItem(item));
})
.orElse(ResponseEntity.notFound().build());
}
@DeleteMapping("/{id}")
public ResponseEntity<Void> deleteItem(@PathVariable Long id) {
return itemService.getItemById(id)
.map(item -> {
itemService.deleteItem(id);
return ResponseEntity.noContent().build();
})
.orElse(ResponseEntity.notFound().build());
}
}
```
### Step 7: Run the Application
```bash
./mvnw spring-boot:run
```
### Step 8: Test CRUD Operations
- **GET** `/items` - List all items
- **GET** `/items/{id}` - Fetch item by ID
- **POST** `/items` - Create a new item
- **PUT** `/items/{id}` - Update an item
- **DELETE** `/items/{id}` - Delete an item
This setup provides a basic structure for a Spring Boot application with full CRUD functionality using MariaDB. Customize and expand as needed for your specific use case.