Entidad
package com.trifulcas.SpringBootData;
import java.sql.Timestamp;
import java.util.Date;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
@Entity
@Table(name = "country")
public class Country {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "country_id")
private int countryId;
@Column(name = "country", nullable = false)
private String country;
@Column(name = "last_update", nullable = false)
private Timestamp lastUpdate;
public Country() {
super();
// TODO Auto-generated constructor stub
}
public Country(String country) {
super();
this.country = country;
Date now = new Date();
this.lastUpdate = new Timestamp(now.getTime());
}
public int getCountryId() {
return countryId;
}
public void setCountryId(int countryId) {
this.countryId = countryId;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
public Timestamp getLastUpdate() {
return lastUpdate;
}
public void setLastUpdate(Timestamp lastUpdate) {
this.lastUpdate = lastUpdate;
}
@Override
public String toString() {
return "Country [countryId=" + countryId + ", name=" + country + ", lastUpdate=" + lastUpdate + "]";
}
}
Repositorio
package com.trifulcas.SpringBootData;
import org.springframework.data.repository.CrudRepository;
public interface CountryRepository extends CrudRepository<Country, Integer> {
}
Controlador
package com.trifulcas.SpringBootData;
import java.util.Optional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
// Esta anotación serializa por defecto todo lo que las funciones retornen
@RestController
@RequestMapping("/country") // Esto permite poner un prefijo a todas las peticiones
public class CountryController {
// Lo que hace es crear e inyectar un objeto de tipo
// CRUD con la entidad 'Country'
// Este objeto nos servirá como un DAO, nos permite crear, modificar
// obtener y borrar cualquier elemento de la web
// el objeto repository nos permite usar findall, findbyid, deletebyid, save...
@Autowired
private CountryRepository countryRepository;
@GetMapping("/add")
public Country addNewCountry(@RequestParam(value = "name", defaultValue = "Nueva categoría") String name) {
Country cat = new Country(name);
countryRepository.save(cat);
return cat;
}
@GetMapping("/delete")
public String deleteCountry(@RequestParam(value = "id", defaultValue = "0") String id) {
try {
countryRepository.deleteById(Integer.parseInt(id));
return "Borrado " + id;
} catch (Exception ex) {
return ex.getMessage();
}
}
@GetMapping("/get")
public Optional<Country> getCountry(@RequestParam(value = "id", defaultValue = "0") String id) {
try {
Optional<Country> cat = countryRepository.findById(Integer.parseInt(id));
return cat;
} catch (Exception ex) {
return Optional.empty();
}
}
@GetMapping("/all")
public Iterable<Country> viewAll() {
return countryRepository.findAll();
}
}