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


🎯 Tarefas
Neste projeto, você aprenderá:
- Como configurar o projeto e configurar as dependências necessárias
- Como aprimorar a classe de entidade
Courseadicionando 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
CourseMappere 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.
- Abra o arquivo
pom.xmlno projetoMyBatisCourseDemo02. - 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>
- 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>
- 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.
- Abra o arquivo
Course.javano diretório/src/main/java/org/labex/pojo. - Adicione as seguintes propriedades à classe
Course:
private int cNo;
private String cName;
private String teacher;
- Adicione o seguinte construtor:
public Course() {
}
public Course(int cNo, String cName, String teacher) {
this.cNo = cNo;
this.cName = cName;
this.teacher = teacher;
}
- 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;
}
- 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.
- Abra o arquivo
mybatis-config.xmlno diretóriosrc/main/resources. - Adicione a seguinte seção
<typeAliases>para definir aliases para as classes de entidade:
<typeAliases>
<package name="org.labex.pojo"/>
</typeAliases>
- 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>
- Registre o arquivo de mapeamento SQL
CourseMapper.xmlna 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.
- Abra o arquivo
CourseMapper.javano pacoteorg.labex.mapper. - 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.
- Abra o arquivo
CourseMapper.xmlno diretóriosrc/main/java/org/labex/mapper. - 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.
- Abra o arquivo
MyBatisTest.javano diretório/src/test/java/org/labex/test. - 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.


Resumo
Parabéns! Você concluiu este projeto. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.



