Saludos a todos
Le solicitamos a ChatGPT que nos dijera cómo hacer un todo List utilizando Java, Spring Boot y MySQL y nos dio la siguiente lista de tareas las cuales iremos ejecutando y explicando a detalle.
Este ejercicio to do list nos permite realizar un CRUD: Create (Crear), Read (Leer), Update (Actualizar) y Delete (Borrar) información de una base de datos. Nos centraremos en el backend del ejercicio y en la segunda parte implementaremos el Front End de la aplicación.
Puedes ingresar al GITHUB y descarga aquí el código
- Crear un proyecto Spring Boot en el IDE de preferencia.
- CREACIÓN BD: Esta base de datos será creada con MySQL Workbench 8.0 y tendrá columnas: (id, titulo, descripción y fecha). Tener en cuenta el tipo de dato de cada atributo.
- CONEXIÓN BD: Se requiere conectarla a un servidor, en este caso sigo usando MySQL Server, el cuál está dentro de nuestro programa MySQL Workbench 8.0
- CONFIGURACION: Para la configuración de "application.properties". Tener presente que esta configuración sólo aplica para MySQL, si tienes otro gestor de BD debes consultar la configuración.
spring.datasource.url=jdbc:mysql://localhost:3306/todolist
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect
spring.jpa.hibernate.ddl-auto=update
- Crear la entidad "Tarea" que representará las tareas en la base de datos.
package com.example.demo.Entity;
import jakarta.persistence.*;
import java.time.LocalDate;
@Entity
@Table(name = "todolist")
public class TodolistEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "titulo")
private String titulo;
@Column(name = "descripcion")
private String descripcion;
@Column(name = "fecha")
private LocalDate fecha;
public TodolistEntity(){
}
public TodolistEntity(String titulo, String descripcion, LocalDate fecha) {
this.titulo = titulo;
this.descripcion = descripcion;
this.fecha = fecha;
}
public String getTitulo() {
return titulo;
}
public void setTitulo(String titulo) {
this.titulo = titulo;
}
public String getDescripcion() {
return descripcion;
}
public void setDescripcion(String descripcion) {
this.descripcion = descripcion;
}
public LocalDate getFecha() {
return fecha;
}
public void setFecha(LocalDate fecha) {
this.fecha = fecha;
}
}
package com.example.demo.Repository;
import com.example.demo.Entity.TodolistEntity;
import org.springframework.data.jpa.repository.JpaRepository;
public interface TodolistRepository extends JpaRepository<TodolistEntity, Long> {
}
package com.example.demo.Controller;
import com.example.demo.Entity.TodolistEntity;
import com.example.demo.Repository.TodolistRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/tareas")
public class TodolistController {
@Autowired
private TodolistRepository todolistRepository;
@GetMapping("")
public List<TodolistEntity> mostrarTarea(){
return todolistRepository.findAll();
}
@PostMapping("")
public TodolistEntity crearTarea(@RequestBody TodolistEntity todolistEntity){
return todolistRepository.save(todolistEntity);
}
@PutMapping("/{id}")
public TodolistEntity actualizarTarea(@RequestBody TodolistEntity todolistEntity){
return todolistRepository.save(todolistEntity);
}
@DeleteMapping("/{id}")
public void eliminarTarea(@PathVariable Long id){
todolistRepository.deleteById(id);
}
}