Introducción
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
resultMappara 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.
Modificar la clase de entidad
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.javaubicado en el directorio/org/lanqiao/pojo. - Cambie las propiedades
cNo,cNameyteacheraid,nameylecturerrespectivamente. - 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.javaubicado 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.
package org.lanqiao.mapper;
import java.util.List;
import java.util.Map;
import org.lanqiao.pojo.Course;
public interface CourseMapper {
List<Course> selectAllCourses();
Map<String, Object> selectCourseById(int id);
}
Configurar el archivo XML del Mapper
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.xmlubicado en el directorio raíz del proyecto. - Defina un
resultMappara especificar el mapeo entre las columnas de la tabla de la base de datos y las propiedades de la claseCourse. - 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.javaubicado 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 unHashMap.
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:


Resumen
¡Felicitaciones! Has completado este proyecto. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.



