Operar a Tabela de Cursos

JavaScriptBeginner
Pratique Agora

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

Exemplo de consulta da tabela de cursos

Exemplo de SQL dinâmico do MyBatis

Exemplo de consulta em lote

🎯 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.

  1. Abra o arquivo CourseMapper.java localizado no diretório /org/lanqiao/mapper/.

  2. Implemente o método selectCourses na interface CourseMapper. Este método deve aceitar um parâmetro Map<String, Object> para armazenar os parâmetros de entrada.

List<Course> selectCourses(Map<String, Object> params);
  1. Abra o arquivo CourseMapper.xml localizado no diretório /org/lanqiao/mapper/.

  2. Implemente a instrução SQL selectCourses no namespace CourseMapper. Use SQL dinâmico para verificar se o parâmetro courseName está 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>
  1. Defina o courseResultMap no arquivo CourseMapper.xml para 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>
  1. Abra o arquivo MyBatisTest.java localizado no diretório /org/lanqiao/test/.

  2. Implemente o método de teste testSelectCourses para testar a funcionalidade selectCourses.

@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.

  1. Abra o arquivo CourseMapper.java localizado no diretório /org/lanqiao/mapper/.

  2. Implemente o método updateTeacher na interface CourseMapper. Este método deve aceitar um parâmetro Map<String, Object> para armazenar os parâmetros de entrada.

void updateTeacher(Map<String, Object> params);
  1. Abra o arquivo CourseMapper.xml localizado no diretório /org/lanqiao/mapper/.

  2. Implemente a instrução SQL updateTeacher no namespace CourseMapper. Use SQL dinâmico para verificar se o parâmetro teacherName está vazio. Se não estiver vazio, atualize a coluna teacher para o curso com o courseId especificado.

<update id="updateTeacher" parameterType="java.util.Map">
    UPDATE course
    <set>
        <if test="teacherName != null and teacherName != ''">
            teacher = #{teacherName},
        </if>
    </set>
    WHERE cNo = #{courseId}
</update>
  1. Abra o arquivo MyBatisTest.java localizado no diretório /org/lanqiao/test/.

  2. Implemente o método de teste testUpdateTeacher para testar a funcionalidade updateTeacher.

@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.

  1. Open the CourseMapper.java file located in the /org/lanqiao/mapper/ directory.

  2. Implement the selectCoursesByIds method in the CourseMapper interface. This method should accept a Map<String, Object> parameter to hold the input parameters.

List<Map<String, Object>> selectCoursesByIds(Map<String, Object> params);
  1. Open the CourseMapper.xml file located in the /org/lanqiao/mapper/ directory.

  2. Implement the selectCoursesByIds SQL statement in the CourseMapper namespace. Use the <foreach> tag to iterate over the ids list 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>
  1. Open the MyBatisTest.java file located in the /org/lanqiao/test/ directory.

  2. Implement the testSelectCoursesByIds test method to test the selectCoursesByIds functionality.

@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.

✨ Verificar Solução e Praticar✨ Verificar Solução e Praticar✨ Verificar Solução e Praticar