En este proyecto, aprenderás a usar MyBatis para recuperar información de cursos desde una base de datos y mapear los resultados a un objeto Java personalizado. También aprenderás a manejar las inconsistencias entre la estructura de la tabla de la base de datos y las propiedades de la clase de entidad.
👀 Vista previa
🎯 Tareas
En este proyecto, aprenderás:
Cómo modificar las propiedades y métodos de una clase de entidad para que coincidan con la estructura de la tabla de la base de datos.
Cómo configurar la interfaz del mapper para definir los métodos de consulta de información de cursos.
Cómo configurar el archivo XML del mapper para definir las consultas SQL y el mapeo de resultados.
Cómo implementar casos de prueba para verificar la funcionalidad del mapper.
🏆 Logros
Después de completar este proyecto, podrás:
Usar MyBatis para interactuar con una base de datos y recuperar datos.
Usar resultMap para manejar las inconsistencias entre la estructura de la tabla de la base de datos y las propiedades de la clase de entidad.
Escribir casos de prueba para verificar la funcionalidad de un mapper de MyBatis.
En este paso, aprenderás a modificar las propiedades y métodos de la clase Course para que coincidan con la estructura de la tabla de la base de datos.
Abra el archivo Course.java ubicado en el directorio /org/lanqiao/pojo.
Cambie las propiedades cNo, cName y teacher a id, name y lecturer respectivamente.
Modifique los métodos getter y setter en consecuencia para que coincidan con los nuevos nombres de propiedad.
Guarde los cambios en el archivo Course.java.
package org.lanqiao.pojo;
/**
* Define una clase Course
* @author lanqiao
*/
public class Course {
// Cambie el número de curso a id
private int id;
// Cambie el nombre del curso a name
private String name;
// Cambie el profesor a lecturer
private String lecturer;
public Course() {
}
public Course(int id, String name, String lecturer) {
this.id = id;
this.name = name;
this.lecturer = lecturer;
}
// Modifique los nombres de los métodos getter y setter
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getLecturer() {
return lecturer;
}
public void setLecturer(String lecturer) {
this.lecturer = lecturer;
}
@Override
public String toString() {
return "Course ID: " + this.id + "\tCourse Name: " + this.name + "\tLecturer: " + this.lecturer;
}
}
Configurar la interfaz del mapper
En este paso, aprenderás a configurar la interfaz CourseMapper para definir los métodos de consulta de información de cursos.
Abra el archivo CourseMapper.java ubicado en el directorio /org/lanqiao/mapper.
Modifique la interfaz para incluir los siguientes métodos:
selectAllCourses(): Recupera toda la información de cursos.
selectCourseById(int id): Recupera la información del curso con el ID de curso especificado.
En este paso, aprenderás a configurar el archivo CourseMapper.xml para definir las consultas SQL y el mapeo de resultados.
Abra el archivo CourseMapper.xml ubicado en el directorio raíz del proyecto.
Defina un resultMap para especificar el mapeo entre las columnas de la tabla de la base de datos y las propiedades de la clase Course.
Defina las consultas SQL para los métodos en la interfaz CourseMapper.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.lanqiao.mapper.CourseMapper">
<!-- Definición de resultMap -->
<resultMap id="courseResultMap" type="org.lanqiao.pojo.Course">
<id property="id" column="cNo"/>
<result property="name" column="cName"/>
<result property="lecturer" column="teacher"/>
</resultMap>
<!-- Consulta de toda la información de cursos -->
<select id="selectAllCourses" resultMap="courseResultMap">
SELECT * FROM course;
</select>
<!-- Consulta de información de curso con número de curso 2 -->
<select id="selectCourseById" resultType="java.util.HashMap">
SELECT * FROM course WHERE cNo = #{id};
</select>
</mapper>
Implementar los casos de prueba
En este paso, aprenderás a implementar los casos de prueba para verificar la funcionalidad de CourseMapper.
Abra el archivo MyBatisTest.java ubicado en el directorio /org/lanqiao/test.
Implemente el método testSelectAllCourses() para recuperar y mostrar toda la información de cursos.
Implemente el método testSelectCourseById() para recuperar la información del curso con número de curso 2 y almacenar el resultado en un HashMap.
package org.lanqiao.test;
import java.io.IOException;
import java.io.Reader;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Before;
import org.junit.Test;
import org.lanqiao.mapper.CourseMapper;
import org.lanqiao.pojo.Course;
public class MyBatisTest {
SqlSessionFactory sessionFactory = null;
SqlSession session = null;
@Before
public void before() throws IOException{
String resource = "mybatis-config.xml";
// Cargar el archivo de configuración de MyBatis
Reader reader = Resources.getResourceAsReader(resource);
// Crear la fábrica de SqlSession
sessionFactory = new SqlSessionFactoryBuilder().build(reader);
// Crear un objeto SqlSession capaz de ejecutar instrucciones SQL en archivos de mapeo SQL
session = sessionFactory.openSession();
}
@Test
public void testSelectAllCourses() throws IOException{
// Llamar al método getMapper() en session para devolver el objeto de interfaz
CourseMapper cMapper = session.getMapper(CourseMapper.class);
// Realizar la consulta y devolver todos los objetos Course
List<Course> courses = cMapper.selectAllCourses();
System.out.println(courses);
session.close();
}
@Test
public void testSelectCourseById() {
// Obtener una instancia de CourseMapper
CourseMapper mapper = session.getMapper(CourseMapper.class);
// Llamar al método para consultar la información del curso con número de curso 2
Map<String, Object> course = mapper.selectCourseById(2);
// Imprimir el resultado de la consulta
System.out.println(course);
}
}
Siguiendo estos pasos, has modificado con éxito la clase de entidad, configurado la interfaz y el archivo XML del mapper y ha implementado los casos de prueba para recuperar información de cursos usando MyBatis.
Ejecución
Finalmente, puedes compilar y ejecutar el código en la terminal y comprobar los archivos de prueba con Maven, usando los siguientes comandos:
cd MyBatisCourseDemo03
mvn test
Puedes consultar los siguientes efectos de ejecución: