Introdução
Neste projeto, você aprenderá como usar o MyBatis para realizar várias operações em uma tabela de cursos, incluindo consultar informações do curso, atualizar o professor do curso e consultar dados do curso em lote.
👀 Pré-visualização



🎯 Tarefas
Neste projeto, você aprenderá:
- Como consultar informações do curso cujo nome começa com "C" maiúsculo usando SQL dinâmico
- Como atualizar o professor de um curso específico, mantendo os outros inalterados, usando SQL dinâmico
- Como consultar informações do curso em lote com uma lista de números de curso, usando SQL dinâmico
🏆 Conquistas
Após concluir este projeto, você será capaz de:
- Usar parâmetros de entrada e saída do MyBatis
- Implementar SQL dinâmico no MyBatis
- Usar mapeamento de resultados para especificar o mapeamento do conjunto de resultados
- Usar a tag
<foreach>para consultas em lote
Consultar Informações do Curso
Nesta etapa, você aprenderá como consultar as informações do curso cujo nome começa com "C" maiúsculo usando SQL dinâmico.
Abra o arquivo
CourseMapper.javalocalizado no diretório/org/lanqiao/mapper/.Implemente o método
selectCoursesna interfaceCourseMapper. Este método deve aceitar um parâmetroMap<String, Object>para armazenar os parâmetros de entrada.
List<Course> selectCourses(Map<String, Object> params);
Abra o arquivo
CourseMapper.xmllocalizado no diretório/org/lanqiao/mapper/.Implemente a instrução SQL
selectCoursesno namespaceCourseMapper. Use SQL dinâmico para verificar se o parâmetrocourseNameestá vazio. Se não estiver vazio, adicione uma condição para filtrar os nomes dos cursos que começam com "C" maiúsculo.
<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 o
courseResultMapno arquivoCourseMapper.xmlpara especificar o mapeamento do 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 o arquivo
MyBatisTest.javalocalizado no diretório/org/lanqiao/test/.Implemente o método de teste
testSelectCoursespara testar a funcionalidadeselectCourses.
@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);
}
Atualizar Professor do Curso
Nesta etapa, você aprenderá como atualizar o professor do curso com o número do curso "7" para "Blue" usando SQL dinâmico.
Abra o arquivo
CourseMapper.javalocalizado no diretório/org/lanqiao/mapper/.Implemente o método
updateTeacherna interfaceCourseMapper. Este método deve aceitar um parâmetroMap<String, Object>para armazenar os parâmetros de entrada.
void updateTeacher(Map<String, Object> params);
Abra o arquivo
CourseMapper.xmllocalizado no diretório/org/lanqiao/mapper/.Implemente a instrução SQL
updateTeacherno namespaceCourseMapper. Use SQL dinâmico para verificar se o parâmetroteacherNameestá vazio. Se não estiver vazio, atualize a colunateacherpara o curso com ocourseIdespecificado.
<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 o arquivo
MyBatisTest.javalocalizado no diretório/org/lanqiao/test/.Implemente o método de teste
testUpdateTeacherpara testar a funcionalidadeupdateTeacher.
@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 em Lote de Informações do Curso
In this step, you will learn how to batch query the course information with the course numbers "1,2,3" using dynamic SQL.
Open the
CourseMapper.javafile located in the/org/lanqiao/mapper/directory.Implement the
selectCoursesByIdsmethod in theCourseMapperinterface. This method should accept aMap<String, Object>parameter to hold the input parameters.
List<Map<String, Object>> selectCoursesByIds(Map<String, Object> params);
Open the
CourseMapper.xmlfile located in the/org/lanqiao/mapper/directory.Implement the
selectCoursesByIdsSQL statement in theCourseMappernamespace. Use the<foreach>tag to iterate over theidslist and build the IN clause.
<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>
Open the
MyBatisTest.javafile located in the/org/lanqiao/test/directory.Implement the
testSelectCoursesByIdstest method to test theselectCoursesByIdsfunctionality.
@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);
}
Run
To make sure that the code works, take care to introduce relevant classes into the code.
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;
Finally you can compile and run the code in the terminal and check the test files with Maven, using the following commands:
cd MyBatisCourseDemo03
mvn test
You can refer to 👀 Preview for a running rendering.
Resumo
Parabéns! Você concluiu este projeto. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.



