CRUD de Horário de Cursos com MyBatis

JavaScriptBeginner
Pratique Agora

Introdução

Neste projeto, você aprenderá como realizar operações CRUD (Create, Read, Update, Delete - Criar, Ler, Atualizar, Excluir) em uma tabela de horários de cursos usando MyBatis, um framework de persistência Java popular.

👀 Visualização

Visualização da tabela de horários de cursos

Visualização da tabela de horários de cursos

🎯 Tarefas

Neste projeto, você aprenderá:

  • Como configurar o projeto e configurar as dependências necessárias
  • Como aprimorar a classe de entidade Course adicionando propriedades, construtores, métodos setter/getter e outros conteúdos
  • Como aprimorar o arquivo de configuração do MyBatis mybatis-config.xml
  • Como implementar a interface CourseMapper e seus métodos correspondentes
  • Como implementar o mapeamento SQL no arquivo CourseMapper.xml
  • Como implementar os casos de teste no arquivo MyBatisTest.java

🏆 Conquistas

Após concluir este projeto, você será capaz de:

  • Usar MyBatis para interagir com um banco de dados MySQL
  • Definir classes de entidade e configurar os arquivos de mapeamento MyBatis
  • Implementar operações CRUD usando MyBatis
  • Escrever testes unitários para verificar a funcionalidade da aplicação

Configurar o Projeto

Nesta etapa, você aprenderá como configurar o projeto e configurar as dependências necessárias.

  1. Abra o arquivo pom.xml no projeto MyBatisCourseDemo02.
  2. Adicione as seguintes dependências à seção <dependencies>:
<!-- MyBatis jar -->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.6</version>
    </dependency>

    <!-- MySQL database driver jar -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.16</version>
    </dependency>
  1. Adicione as seguintes propriedades à seção <properties> para configurar a codificação de caracteres e a versão do JDK:
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>
  1. Adicione a seguinte seção <build> para incluir os arquivos de mapeamento XML no classpath:
    <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>

Melhorar a Classe de Entidade

Nesta etapa, você aprimorará a classe de entidade Course adicionando propriedades, construtores, métodos setter/getter e outros conteúdos.

  1. Abra o arquivo Course.java no diretório /src/main/java/org/labex/pojo.
  2. Adicione as seguintes propriedades à classe Course:
    private int cNo;
    private String cName;
    private String teacher;
  1. Adicione o seguinte construtor:
    public Course() {

    }

    public Course(int cNo, String cName, String teacher) {
        this.cNo = cNo;
        this.cName = cName;
        this.teacher = teacher;
    }
  1. Adicione os seguintes métodos getter e setter:
    public int getCNo() {
        return cNo;
    }

    public void setCNo(int cNo) {
        this.cNo = cNo;
    }

    public String getCName() {
        return cName;
    }

    public void setCName(String cName) {
        this.cName = cName;
    }

    public String getTeacher() {
        return teacher;
    }

    public void setTeacher(String teacher) {
        this.teacher = teacher;
    }
  1. Adicione o seguinte método toString():
    @Override
    public String toString() {
        return "Course number: " + this.cNo + "\tCourse name: " + this.cName + "\tTeacher: " + this.teacher;
    }

Melhorar a Configuração do MyBatis

Nesta etapa, você aprimorará o arquivo de configuração do MyBatis mybatis-config.xml.

  1. Abra o arquivo mybatis-config.xml no diretório src/main/resources.
  2. Adicione a seguinte seção <typeAliases> para definir aliases para as classes de entidade:
    <typeAliases>
        <package name="org.labex.pojo"/>
    </typeAliases>
  1. Configure o ambiente da fonte de dados na seção <environments>:
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <property name="driver" value="${mysql.driver}" />
                <property name="url" value="${mysql.url}" />
                <property name="username" value="${mysql.username}" />
                <property name="password" value="${mysql.password}" />
            </dataSource>
        </environment>
    </environments>
  1. Registre o arquivo de mapeamento SQL CourseMapper.xml na seção <mappers>:
    <mappers>
        <package name="org.labex.mapper" />
    </mappers>

Implementar a Interface CourseMapper

Nesta etapa, você implementará a interface CourseMapper e seus métodos correspondentes.

  1. Abra o arquivo CourseMapper.java no pacote org.labex.mapper.
  2. Adicione os seguintes métodos à interface CourseMapper:
import java.util.List;

import org.labex.pojo.Course;

public interface CourseMapper {

    /**
     * Query all courses information
     */
    public List<Course> queryAllCourse();

    /**
     * Insert a new course
     * @param course
     */
    public int insertCourse(Course course);

    /**
     * Update a course information
     * @param course
     */
    public int updateCourse(Course course);

    /**
     * Delete a course information by course number
     * @param course
     */
    public int deleteCourse(int cNo);
}

Implementar o Mapeamento SQL

Nesta etapa, você implementará o mapeamento SQL no arquivo CourseMapper.xml.

  1. Abra o arquivo CourseMapper.xml no diretório src/main/java/org/labex/mapper.
  2. Adicione as seguintes declarações de mapeamento SQL:
    <!-- Retrieve all course information -->
    <select id="queryAllCourse" resultType="org.labex.pojo.Course">
        select * from course
    </select>

    <!-- Insert a new course -->
    <insert id="insertCourse" parameterType="org.labex.pojo.Course">
        insert into course(cNo,cName,teacher)
        values(#{cNo},#{cName},#{teacher})
    </insert>

    <!-- Update course information based on course number -->
    <update id="updateCourse" parameterType="org.labex.pojo.Course">
        update course set cName=#{cName},teacher=#{teacher}
        where cNo=#{cNo}
    </update>

    <!-- Delete course information based on course number -->
    <delete id="deleteCourse" parameterType="int">
        delete from course where cNo=#{cNo}
    </delete>

Implementar os Casos de Teste

Nesta etapa, você implementará os casos de teste no arquivo MyBatisTest.java.

  1. Abra o arquivo MyBatisTest.java no diretório /src/test/java/org/labex/test.
  2. Adicione os seguintes métodos de teste:
import java.io.IOException;
import java.io.Reader;
import java.util.List;

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.labex.mapper.CourseMapper;
import org.labex.pojo.Course;

public class MyBatisTest {

    SqlSessionFactory sessionFactory = null;
    SqlSession session = null;

    @Before
    public void before() throws IOException{
        String resource = "mybatis-config.xml";
        // Load MyBatis configuration file
        Reader reader = Resources.getResourceAsReader(resource);
        // Create SqlSession factory
        sessionFactory = new SqlSessionFactoryBuilder().build(reader);
        // Create SqlSession object capable of executing SQL statements in SQL mapping files
        session = sessionFactory.openSession();
    }

    @Test
    public void testSel() throws IOException{
        // Call the getMapper() method in session to return the interface object
        CourseMapper cMapper = session.getMapper(CourseMapper.class);
        // Perform query and return all Course objects
        List<Course> courses = cMapper.queryAllCourse();
        System.out.println(courses);
        session.close();
    }

    @Test
    public void testIns() throws IOException{
        // Call the getMapper() method in session to return the interface object
        CourseMapper cMapper = session.getMapper(CourseMapper.class);

        Course course = new Course(8,"Artificial Intelligence","Tom");

        int i = cMapper.insertCourse(course);

        session.commit();

        System.out.println((i!=0 ? "Data added successfully":"Failed to add data"));

        session.close();
    }

    @Test
    public void testUpd() throws IOException{
        // Call the getMapper() method in session to return the interface object
        CourseMapper cMapper = session.getMapper(CourseMapper.class);

        Course course = new Course(1,"Software Testing","Jack");

        int i = cMapper.updateCourse(course);

        session.commit();

        System.out.println((i!=0 ? "Data updated successfully":"Failed to update data"));

        session.close();
    }

    @Test
    public void testDEl() throws IOException{
        // Call the getMapper() method in session to return the interface object
        CourseMapper cMapper = session.getMapper(CourseMapper.class);

        int i = cMapper.deleteCourse(7);

        session.commit();

        System.out.println((i!=0 ? "Data deleted successfully":"Failed to delete data"));

        session.close();
    }
}

Após concluir estas etapas, você configurou com sucesso o projeto, aprimorou a classe de entidade, configurou as configurações do MyBatis, implementou a interface CourseMapper e implementou os casos de teste. Agora você pode executar os testes para verificar a funcionalidade da aplicação.

Executar

Em seguida, compile e execute no terminal e use o Maven para verificar os arquivos de teste:

cd MyBatisCourseDemo02
mvn test

Você pode consultar as etapas abaixo para verificar os resultados do desafio.

Unfinished test case image

Test execution results

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✨ Verificar Solução e Praticar✨ Verificar Solução e Praticar✨ Verificar Solução e Praticar