diff --git a/pom.xml b/pom.xml
index 4f54660..f23c1e6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,6 +1,6 @@
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
org.springframework.boot
@@ -8,35 +8,36 @@
3.2.3
- com.app
- backend
+ com.fcfm
+ back-end
0.0.1-SNAPSHOT
- backend
- first microservice in spring
+ back-end
+ Demo project for Spring Boot
17
+
org.springframework.boot
spring-boot-starter-data-jpa
+
org.springframework.boot
spring-boot-starter-web
-
- org.springframework.boot
- spring-boot-devtools
- runtime
- true
-
org.springframework.boot
spring-boot-starter-test
test
+
+ mysql
+ mysql-connector-java
+ 8.0.13
+
@@ -48,4 +49,4 @@
-
+
\ No newline at end of file
diff --git a/src/main/java/com/app/backend/BackendApplication.java b/src/main/java/com/app/backend/BackendApplication.java
index cf3920b..949edd6 100644
--- a/src/main/java/com/app/backend/BackendApplication.java
+++ b/src/main/java/com/app/backend/BackendApplication.java
@@ -2,7 +2,9 @@
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
+@EnableJpaRepositories
@SpringBootApplication
public class BackendApplication {
diff --git a/src/main/java/com/app/backend/controller/AlumnoApiController.java b/src/main/java/com/app/backend/controller/AlumnoApiController.java
new file mode 100644
index 0000000..0d5d179
--- /dev/null
+++ b/src/main/java/com/app/backend/controller/AlumnoApiController.java
@@ -0,0 +1,22 @@
+package com.app.backend.controller;
+
+import com.app.backend.model.Alumno;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RequestMapping("/")
+public interface AlumnoApiController {
+ @PostMapping("/create-alumno")
+ public void createAlumno(@RequestBody Alumno newAlumno);
+ @GetMapping("/alumno/{id}")
+ public Alumno getAlumnoById(@PathVariable Long id);
+
+ @GetMapping("/alumno")
+ public List getAlumnoList();
+
+ @PutMapping("/update-alumno/{id}")
+ public Alumno updateAlumno(@PathVariable Long id, Alumno updatedAlumno);
+ @DeleteMapping("/delete-alumno/{id}")
+ public void deleteAlumno(@PathVariable Long id);
+}
diff --git a/src/main/java/com/app/backend/controller/impl/AlumnoApiControllerImpl.java b/src/main/java/com/app/backend/controller/impl/AlumnoApiControllerImpl.java
new file mode 100644
index 0000000..e0a444d
--- /dev/null
+++ b/src/main/java/com/app/backend/controller/impl/AlumnoApiControllerImpl.java
@@ -0,0 +1,41 @@
+package com.app.backend.controller.impl;
+
+import com.app.backend.controller.AlumnoApiController;
+import com.app.backend.model.Alumno;
+import com.app.backend.model.Alumno;
+import com.app.backend.service.AlumnoService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+public class AlumnoApiControllerImpl implements AlumnoApiController {
+
+ @Autowired
+ AlumnoService alumnoService;
+ @Override
+ public void createAlumno(@RequestBody Alumno newAlumno){
+ alumnoService.createAlumno(newAlumno);
+ }
+
+ @Override
+ public Alumno getAlumnoById(@PathVariable Long id){
+ return alumnoService.getAlumnoById(id);
+ }
+
+ @Override
+ public List getAlumnoList(){
+ return alumnoService.getAlumnoList();
+ }
+
+ @Override
+ public Alumno updateAlumno(Long id, Alumno updatedAlumno){
+ return alumnoService.updateAlumno(id, updatedAlumno);
+ }
+
+ @Override
+ public void deleteAlumno(Long id){
+ alumnoService.deleteAlumno(id);
+ }
+}
diff --git a/src/main/java/com/app/backend/model/Alumno.java b/src/main/java/com/app/backend/model/Alumno.java
new file mode 100644
index 0000000..9bfd505
--- /dev/null
+++ b/src/main/java/com/app/backend/model/Alumno.java
@@ -0,0 +1,94 @@
+package com.app.backend.model;
+
+import java.sql.Date;
+
+public class Alumno {
+
+ private String primerNombre;
+
+
+ private String segundoNombre;
+
+
+ private String apellidoPat;
+
+
+ private String apellidoMat;
+
+
+ private Date fechaNac;
+
+
+ private String curp;
+
+
+ private String email;
+
+
+ public Alumno(String primerNombre, String segundoNombre, String apellidoPat, String apellidoMat, Date fechaNac, String curp, String email){
+ this.primerNombre = primerNombre;
+ this.segundoNombre = segundoNombre;
+ this.apellidoMat = apellidoMat;
+ this.apellidoPat = apellidoPat;
+ this.fechaNac = fechaNac;
+ this.curp = curp;
+ this.email = email;
+ }
+
+ public Alumno(){}
+ public String getPrimerNombre() {
+ return primerNombre;
+ }
+
+ public void setPrimerNombre(String primerNombre) {
+ this.primerNombre = primerNombre;
+ }
+
+ public String getSegundoNombre() {
+ return segundoNombre;
+ }
+
+ public void setSegundoNombre(String segundoNombre) {
+ this.segundoNombre = segundoNombre;
+ }
+
+ public String getApellidoPat() {
+ return apellidoPat;
+ }
+
+ public void setApellidoPat(String apellidoPat) {
+ this.apellidoPat = apellidoPat;
+ }
+
+ public String getApellidoMat() {
+ return apellidoMat;
+ }
+
+ public void setApellidoMat(String apellidoMat) {
+ this.apellidoMat = apellidoMat;
+ }
+
+ public Date getFechaNac() {
+ return fechaNac;
+ }
+
+ public void setFechaNac(Date fechaNac) {
+ this.fechaNac = fechaNac;
+ }
+
+ public String getCurp() {
+ return curp;
+ }
+
+ public void setCurp(String curp) {
+ this.curp = curp;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/app/backend/repository/AlumnoRepository.java b/src/main/java/com/app/backend/repository/AlumnoRepository.java
new file mode 100644
index 0000000..e014a65
--- /dev/null
+++ b/src/main/java/com/app/backend/repository/AlumnoRepository.java
@@ -0,0 +1,21 @@
+package com.app.backend.repository;
+
+import com.app.backend.model.Alumno;
+import com.app.backend.repository.Entity.AlumnoEntity;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public interface AlumnoRepository {
+ void insertar(AlumnoEntity alumnoEntity);
+
+ AlumnoEntity getAlumnoById(Long id);
+
+ List getAlumnoList();
+
+ void deleteAlumno(Long id);
+
+ AlumnoEntity updateAlumno(AlumnoEntity alumnoEntity);
+
+}
diff --git a/src/main/java/com/app/backend/repository/Entity/AlumnoEntity.java b/src/main/java/com/app/backend/repository/Entity/AlumnoEntity.java
new file mode 100644
index 0000000..82381a7
--- /dev/null
+++ b/src/main/java/com/app/backend/repository/Entity/AlumnoEntity.java
@@ -0,0 +1,112 @@
+package com.app.backend.repository.Entity;
+import jakarta.persistence.*;
+
+import java.sql.Date;
+
+@Entity
+@Table(name = "alumno")
+public class AlumnoEntity {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Column(name="alumno_id")
+ private Long alumnoId;
+
+ @Column(name="primer_nombre")
+ private String primerNombre;
+
+ @Column(name="segundo_nombre")
+ private String segundoNombre;
+
+ @Column(name="apellido_pat")
+ private String apellidoPat;
+
+ @Column(name="apellido_mat")
+ private String apellidoMat;
+
+ @Column(name="fecha_nac")
+ private Date fechaNac;
+
+ @Column(name="curp")
+ private String curp;
+
+ @Column(name="email")
+
+ private String email;
+
+
+ public AlumnoEntity(String primerNombre, String segundoNombre, String apellidoMat, String apellidoPat, Date fechaNac, String curp, String email){
+ this.primerNombre = primerNombre;
+ this.segundoNombre = segundoNombre;
+ this.apellidoMat = apellidoMat;
+ this.apellidoPat = apellidoPat;
+ this.fechaNac = fechaNac;
+ this.curp = curp;
+ this.email = email;
+ }
+
+ public AlumnoEntity(){}
+
+ public Long getAlumnoId() {
+ return alumnoId;
+ }
+
+ public void setAlumnoId(Long alumnoId) {
+ this.alumnoId = alumnoId;
+ }
+
+ public String getPrimerNombre() {
+ return primerNombre;
+ }
+
+ public void setPrimerNombre(String primerNombre) {
+ this.primerNombre = primerNombre;
+ }
+
+ public String getSegundoNombre() {
+ return segundoNombre;
+ }
+
+ public void setSegundoNombre(String segundoNombre) {
+ this.segundoNombre = segundoNombre;
+ }
+
+ public String getApellidoPat() {
+ return apellidoPat;
+ }
+
+ public void setApellidoPat(String apellidoPat) {
+ this.apellidoPat = apellidoPat;
+ }
+
+ public String getApellidoMat() {
+ return apellidoMat;
+ }
+
+ public void setApellidoMat(String apellidoMat) {
+ this.apellidoMat = apellidoMat;
+ }
+
+ public Date getFechaNac() {
+ return fechaNac;
+ }
+
+ public void setFechaNac(Date fechaNac) {
+ this.fechaNac = fechaNac;
+ }
+
+ public String getCurp() {
+ return curp;
+ }
+
+ public void setCurp(String curp) {
+ this.curp = curp;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email;
+ }
+}
diff --git a/src/main/java/com/app/backend/repository/impl/AlumnoRepositoryImpl.java b/src/main/java/com/app/backend/repository/impl/AlumnoRepositoryImpl.java
new file mode 100644
index 0000000..879e8bb
--- /dev/null
+++ b/src/main/java/com/app/backend/repository/impl/AlumnoRepositoryImpl.java
@@ -0,0 +1,43 @@
+package com.app.backend.repository.impl;
+import com.app.backend.repository.AlumnoRepository;
+import com.app.backend.repository.Entity.AlumnoEntity;
+import jakarta.persistence.EntityManager;
+import jakarta.transaction.Transactional;
+import jakarta.persistence.*;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public class AlumnoRepositoryImpl implements AlumnoRepository{
+
+ @PersistenceContext
+ private EntityManager em;
+
+ @Transactional
+ public void insertar(AlumnoEntity alumnoEntity){
+ em.getTransaction().begin();
+ em.persist(alumnoEntity);
+ em.getTransaction().commit();
+ }
+
+ @Override
+ public AlumnoEntity getAlumnoById(Long id){
+ return em.find(AlumnoEntity.class, id);
+ }
+ @Override
+ public List getAlumnoList(){
+ TypedQuery query = em.createQuery("SELECT a FROM Alumno a", AlumnoEntity.class);
+ return query.getResultList();
+ }
+
+ @Transactional
+ public void deleteAlumno(Long id){
+ em.remove(getAlumnoById(id));
+ }
+
+ @Transactional
+ public AlumnoEntity updateAlumno(AlumnoEntity alumnoEntity){
+ return em.merge(alumnoEntity);
+ }
+}
diff --git a/src/main/java/com/app/backend/service/AlumnoService.java b/src/main/java/com/app/backend/service/AlumnoService.java
new file mode 100644
index 0000000..7f8c48f
--- /dev/null
+++ b/src/main/java/com/app/backend/service/AlumnoService.java
@@ -0,0 +1,19 @@
+package com.app.backend.service;
+
+import com.app.backend.model.Alumno;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public interface AlumnoService {
+
+ public void createAlumno(Alumno newStudent);
+ public Alumno getAlumnoById(Long id);
+
+ public void deleteAlumno(Long id);
+
+ public List getAlumnoList();
+
+ public Alumno updateAlumno(long id, Alumno updatedAlumno);
+}
diff --git a/src/main/java/com/app/backend/service/impl/AlumnoServiceImpl.java b/src/main/java/com/app/backend/service/impl/AlumnoServiceImpl.java
new file mode 100644
index 0000000..83a7175
--- /dev/null
+++ b/src/main/java/com/app/backend/service/impl/AlumnoServiceImpl.java
@@ -0,0 +1,63 @@
+package com.app.backend.service.impl;
+
+import com.app.backend.model.Alumno;
+import com.app.backend.repository.AlumnoRepository;
+import com.app.backend.repository.Entity.AlumnoEntity;
+import com.app.backend.service.AlumnoService;
+import com.app.backend.utils.AlumnoMapper;
+import jakarta.annotation.Nullable;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+@Service
+public class AlumnoServiceImpl implements AlumnoService {
+
+ @Autowired
+ private AlumnoRepository alumnoRepository;
+
+ public void createAlumno(Alumno newAlumno){
+ AlumnoEntity alumnoEntity = AlumnoMapper.alumnoModelToAlumnoEntity(newAlumno);
+ alumnoRepository.insertar(alumnoEntity);
+ }
+
+ @Nullable
+ public Alumno getAlumnoById(Long id){
+ AlumnoEntity alumnoEntity = alumnoRepository.getAlumnoById(id);
+ Alumno alumno = AlumnoMapper.alumnoEntitytoAlumnoModel(alumnoEntity);
+ return alumno;
+ }
+
+ @Override
+ public void deleteAlumno(Long id){
+ alumnoRepository.deleteAlumno(id);
+ }
+
+ @Override
+ public List getAlumnoList(){
+ List alumnoEntityList = alumnoRepository.getAlumnoList();
+ List alumnoList = new ArrayList<>();
+ for(AlumnoEntity alumnoEntity : alumnoEntityList){
+ alumnoList.add(AlumnoMapper.alumnoEntitytoAlumnoModel(alumnoEntity));
+ }
+ return alumnoList;
+ }
+
+ @Override
+ public Alumno updateAlumno(long id, Alumno updatedAlumno){
+ Alumno existingAlumno = getAlumnoById(id);
+ if (existingAlumno != null) {
+ existingAlumno.setPrimerNombre(updatedAlumno.getPrimerNombre());
+ existingAlumno.setSegundoNombre(updatedAlumno.getSegundoNombre());
+ existingAlumno.setApellidoPat(updatedAlumno.getApellidoPat());
+ existingAlumno.setApellidoMat(updatedAlumno.getApellidoMat());
+ existingAlumno.setCurp(updatedAlumno.getCurp());
+ existingAlumno.setFechaNac(updatedAlumno.getFechaNac());
+ existingAlumno.setEmail(updatedAlumno.getEmail());
+ }
+ return AlumnoMapper.alumnoEntitytoAlumnoModel(alumnoRepository.updateAlumno(AlumnoMapper.alumnoModelToAlumnoEntity(existingAlumno)));
+ }
+}
diff --git a/src/main/java/com/app/backend/utils/AlumnoMapper.java b/src/main/java/com/app/backend/utils/AlumnoMapper.java
new file mode 100644
index 0000000..80c815e
--- /dev/null
+++ b/src/main/java/com/app/backend/utils/AlumnoMapper.java
@@ -0,0 +1,35 @@
+package com.app.backend.utils;
+
+import com.app.backend.model.Alumno;
+import com.app.backend.repository.Entity.AlumnoEntity;
+
+import java.sql.Date;
+
+public class AlumnoMapper {
+
+ public static Alumno alumnoEntitytoAlumnoModel(AlumnoEntity alumnoEntity){
+ Alumno alumno = new Alumno(
+ alumnoEntity.getPrimerNombre(),
+ alumnoEntity.getSegundoNombre(),
+ alumnoEntity.getApellidoPat(),
+ alumnoEntity.getApellidoMat(),
+ alumnoEntity.getFechaNac(),
+ alumnoEntity.getCurp(),
+ alumnoEntity.getEmail());
+ return alumno;
+ }
+
+ public static AlumnoEntity alumnoModelToAlumnoEntity(Alumno alumno){
+
+ AlumnoEntity alumnoEntity = new AlumnoEntity(
+ alumno.getPrimerNombre(),
+ alumno.getSegundoNombre(),
+ alumno.getApellidoPat(),
+ alumno.getApellidoMat(),
+ alumno.getFechaNac(),
+ alumno.getCurp(),
+ alumno.getEmail()
+ );
+ return alumnoEntity;
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index a0099ef..e69de29 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -1,2 +0,0 @@
-spring.application.name=backend
-spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
\ No newline at end of file
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
new file mode 100644
index 0000000..c455c4f
--- /dev/null
+++ b/src/main/resources/application.yml
@@ -0,0 +1,19 @@
+spring:
+ datasource:
+ url: jdbc:mysql://localhost:3306/universidades?serverTimezone=UTC
+ # spring.datasource.url=jdbc:mysql:3314/universidades
+ username: root
+ password: P3dr0@nt0n10
+ driver-class-name: com.mysql.jdbc.Driver
+ # spring.datasource.driver.class=com.mysql.jdbc.Driver
+ jpa:
+ properties:
+ hibernate:
+ dialect: org.hibernate.dialect.MySQL8Dialect
+ # spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
+ naming.physical-strategy: org.hibernate.boot.model.naming.ImplicitNamingStrategyJpaCompliantImpl
+
+
+
+server:
+ port: 8080
\ No newline at end of file