Introducción
En este proyecto, aprenderás a utilizar MyBatis para realizar diversas operaciones en una tabla de cursos, incluyendo la consulta de información de cursos, la actualización del profesor del curso y la consulta masiva de datos de cursos.
👀 Vista previa



🎯 Tareas
En este proyecto, aprenderás:
- Cómo consultar información de cursos cuyo nombre de curso comienza con una "C" mayúscula utilizando SQL dinámico
- Cómo actualizar el profesor de enseñanza de un curso específico mientras se mantienen los demás inalterados, utilizando SQL dinámico
- Cómo consultar información de cursos en lote con una lista de números de curso, utilizando SQL dinámico
🏆 Logros
Después de completar este proyecto, podrás:
- Utilizar los parámetros de entrada y salida de MyBatis
- Implementar SQL dinámico en MyBatis
- Utilizar el mapeo de resultados para especificar el mapeo del conjunto de resultados
- Utilizar la etiqueta
<foreach>para consultas masivas
Consultar información de cursos
En este paso, aprenderás a consultar la información de cursos cuyo nombre de curso comienza con una "C" mayúscula utilizando SQL dinámico.
Abra el archivo
CourseMapper.javaubicado en el directorio/org/lanqiao/mapper/.Implemente el método
selectCoursesen la interfazCourseMapper. Este método debe aceptar un parámetroMap<String, Object>para almacenar los parámetros de entrada.
List<Course> selectCourses(Map<String, Object> params);
Abra el archivo
CourseMapper.xmlubicado en el directorio/org/lanqiao/mapper/.Implemente la sentencia SQL
selectCoursesen el espacio de nombresCourseMapper. Utilice SQL dinámico para comprobar si el parámetrocourseNameestá vacío. Si no está vacío, agregue una condición para filtrar los nombres de curso que empiecen con una "C" mayúscula.
<select id="selectCourses" resultMap="courseResultMap" parameterType="java.util.Map">
SELECT * FROM course
<where>
<if test="courseName!= null and courseName!= ''">
AND cName LIKE #{courseName}
</if>
</where>
</select>
- Defina el
courseResultMapen el archivoCourseMapper.xmlpara especificar el mapeo del conjunto de resultados.
<resultMap id="courseResultMap" type="org.lanqiao.pojo.Course">
<id property="cNo" column="cNo"/>
<result property="cName" column="cName"/>
<result property="teacher" column="teacher"/>
</resultMap>
Abra el archivo
MyBatisTest.javaubicado en el directorio/org/lanqiao/test/.Implemente el método de prueba
testSelectCoursespara probar la funcionalidad deselectCourses.
@Test
public void testSelectCourses() {
CourseMapper mapper = session.getMapper(CourseMapper.class);
Map<String, Object> params = new HashMap<>();
params.put("courseName", "C%");
List<Course> courses = mapper.selectCourses(params);
System.out.println(courses);
}
Actualizar el profesor del curso
En este paso, aprenderás a actualizar el profesor de enseñanza del curso con el número de curso "7" a "Blue" utilizando SQL dinámico.
Abra el archivo
CourseMapper.javaubicado en el directorio/org/lanqiao/mapper/.Implemente el método
updateTeacheren la interfazCourseMapper. Este método debe aceptar un parámetroMap<String, Object>para almacenar los parámetros de entrada.
void updateTeacher(Map<String, Object> params);
Abra el archivo
CourseMapper.xmlubicado en el directorio/org/lanqiao/mapper/.Implemente la sentencia SQL
updateTeacheren el espacio de nombresCourseMapper. Utilice SQL dinámico para comprobar si el parámetroteacherNameestá vacío. Si no está vacío, actualice la columnateacherpara el curso con elcourseIdespecificado.
<update id="updateTeacher" parameterType="java.util.Map">
UPDATE course
<set>
<if test="teacherName!= null and teacherName!= ''">
teacher = #{teacherName},
</if>
</set>
WHERE cNo = #{courseId}
</update>
Abra el archivo
MyBatisTest.javaubicado en el directorio/org/lanqiao/test/.Implemente el método de prueba
testUpdateTeacherpara probar la funcionalidad deupdateTeacher.
@Test
public void testUpdateTeacher() {
CourseMapper mapper = session.getMapper(CourseMapper.class);
Map<String, Object> params = new HashMap<>();
params.put("courseId", 7);
params.put("teacherName", " Blue");
mapper.updateTeacher(params);
session.commit();
}
Consulta masiva de información de cursos
En este paso, aprenderás a realizar una consulta masiva de la información de cursos con los números de curso "1,2,3" utilizando SQL dinámico.
Abra el archivo
CourseMapper.javaubicado en el directorio/org/lanqiao/mapper/.Implemente el método
selectCoursesByIdsen la interfazCourseMapper. Este método debe aceptar un parámetroMap<String, Object>para almacenar los parámetros de entrada.
List<Map<String, Object>> selectCoursesByIds(Map<String, Object> params);
Abra el archivo
CourseMapper.xmlubicado en el directorio/org/lanqiao/mapper/.Implemente la sentencia SQL
selectCoursesByIdsen el espacio de nombresCourseMapper. Utilice la etiqueta<foreach>para iterar sobre la listaidsy construir la cláusula IN.
<select id="selectCoursesByIds" resultMap="courseResultMap" parameterType="java.util.Map">
SELECT * FROM course WHERE cNo IN
<foreach collection="ids" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</select>
Abra el archivo
MyBatisTest.javaubicado en el directorio/org/lanqiao/test/.Implemente el método de prueba
testSelectCoursesByIdspara probar la funcionalidad deselectCoursesByIds.
@Test
public void testSelectCoursesByIds() {
CourseMapper mapper = session.getMapper(CourseMapper.class);
List<Integer> ids = Arrays.asList(1, 2, 3);
Map<String, Object> params = new HashMap<>();
params.put("ids", ids);
List<Map<String, Object>> coursesByIds = mapper.selectCoursesByIds(params);
System.out.println(coursesByIds);
}
Ejecución
Para asegurarse de que el código funcione, tenga cuidado de introducir las clases relevantes en el código.
CourseMapper.java:
import org.lanqiao.pojo.Course;
import java.util.List;
import java.util.Map;
MyBatisTest.java:
import java.util.Arrays;
import java.util.HashMap;
Finalmente, puede compilar y ejecutar el código en la terminal y comprobar los archivos de prueba con Maven, utilizando los siguientes comandos:
cd MyBatisCourseDemo03
mvn test
Puede consultar 👀 Vista previa para una representación en ejecución.
Resumen
¡Felicitaciones! Has completado este proyecto. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.



