Primero, describimos la relación entre las tablas de la base de datos (sin claves primarias ni foráneas).
El campo id_carrera de la tabla carrera_universitaria corrresponde al campo carrera_id de la tabla alumno.
Clases de entidad:
import java.util.Date;
public class Alumno { private Integer id; private String nombre; private String genero; private Integer grupo; private CarreraUniversitaria carrera;
public Alumno() {
super();
}
public Alumno(Integer id, String nombre, String genero, Integer grupo, CarreraUniversitaria carrera) {
super();
this.id = id;
this.nombre = nombre;
this.genero = genero;
this.grupo = grupo;
this.carrera = carrera;
}
public CarreraUniversitaria getCarrera() {
return carrera;
}
public void setCarrera(CarreraUniversitaria carrera) {
this.carrera = carrera;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getGenero() {
return genero;
}
public void setGenero(String genero) {
this.genero = genero;
}
@Override
public String toString() {
return "Alumno [id=" + id + ", nombre=" + nombre + ", genero=" + genero + ", grupo=" + grupo + ", carrera=" + carrera + "]";
}
public Integer getGrupo() {
return grupo;
}
public void setGrupo(Integer grupo) {
this.grupo = grupo;
}
}
</div><div>```
package com.modelo;
import java.util.List;
public class CarreraUniversitaria {
private Integer id;
private String codigo;
private String nombreCarrera;
private List<Alumno> alumnos;
public CarreraUniversitaria() {
super();
}
public CarreraUniversitaria(Integer id, String codigo, String nombreCarrera, List<Alumno> alumnos) {
super();
this.id = id;
this.codigo = codigo;
this.nombreCarrera = nombreCarrera;
this.alumnos = alumnos;
}
@Override
public String toString() {
return "CarreraUniversitaria [id=" + id + ", codigo=" + codigo + ", nombreCarrera=" + nombreCarrera + ", alumnos=" + alumnos + "]";
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getCodigo() {
return codigo;
}
public void setCodigo(String codigo) {
this.codigo = codigo;
}
public String getNombreCarrera() {
return nombreCarrera;
}
public void setNombreCarrera(String nombreCarrera) {
this.nombreCarrera = nombreCarrera;
}
public List<Alumno> getAlumnos() {
return alumnos;
}
public void setAlumnos(List<Alumno> alumnos) {
this.alumnos = alumnos;
}
}
public interface MapperAlumno { /** * Consulta todos los registros / public List<Alumno> obtenerTodos(); /* * Busca alumnos por carrera, usado en la relación uno a muchos */ public List<Alumno> buscarPorCarrera(Integer carreraId); }
</div><div>```
package com.dao;
import java.util.List;
import com.modelo.CarreraUniversitaria;
public interface MapperCarrera {
/**
* Consulta todos los registros
*/
public List<CarreraUniversitaria> obtenerTodas();
/**
* Busca carrera por ID, usado en la relación muchos a uno
*/
public CarreraUniversitaria obtenerPorId(Integer id);
}
import java.util.List; import org.apache.ibatis.session.SqlSession; import org.junit.After; import org.junit.Before; import org.junit.Test; import com.dao.MapperCarrera; import com.dao.MapperAlumno; import com.modelo.Alumno; import com.modelo.CarreraUniversitaria;
public class TestAsociaciones { private SqlSession sesion; private MapperAlumno mapperAlumno; private MapperCarrera mapperCarrera;
@Before
public void configurar() throws Exception {
sesion = SesionUtil.obtenerSesion();
mapperAlumno = sesion.getMapper(MapperAlumno.class);
mapperCarrera = sesion.getMapper(MapperCarrera.class);
}
@After
public void finalizar() throws Exception {
sesion.commit();
sesion.close();
}
// Prueba uno a muchos
public void probarUnoAMuchos() {
List<CarreraUniversitaria> lista = mapperCarrera.obtenerTodas();
for (CarreraUniversitaria carrera : lista) {
System.out.println(carrera);
}
}
// Prueba búsqueda por carrera
public void probarBuscarPorCarrera() {
List<Alumno> alumnos = mapperAlumno.buscarPorCarrera(3);
for (Alumno alumno : alumnos) {
System.out.println(alumno);
}
}
// Prueba muchos a uno
@Test
public void probarMuchosAUno() {
List<Alumno> alumnos = mapperAlumno.obtenerTodos();
for (Alumno alumno : alumnos) {
System.out.println(alumno);
}
}
// Prueba búsqueda por ID
public void probarObtenerPorId() {
CarreraUniversitaria carrera = mapperCarrera.obtenerPorId(1);
System.out.println(carrera);
}
}
</div>Resultados de la consulta uno a muchos y mucchos a uno.