Consultas de asociación uno a muchos y muchos a uno en MyBatis

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.

Etiquetas: MyBatis java SQL asociaciones uno-a-muchos

Publicado el 7-9 16:21