Neste projeto, você aprenderá como usar o MyBatis para recuperar informações de cursos de um banco de dados e mapear os resultados para um objeto Java personalizado. Você também aprenderá como lidar com inconsistências entre a estrutura da tabela do banco de dados e as propriedades da classe de entidade.
👀 Pré-visualização
🎯 Tarefas
Neste projeto, você aprenderá:
Como modificar as propriedades e métodos de uma classe de entidade para corresponder à estrutura da tabela do banco de dados.
Como configurar a interface do mapper para definir os métodos para consultar informações do curso.
Como configurar o arquivo XML do mapper para definir as consultas SQL e o mapeamento de resultados.
Como implementar casos de teste para verificar a funcionalidade do mapper.
🏆 Conquistas
Após concluir este projeto, você será capaz de:
Usar o MyBatis para interagir com um banco de dados e recuperar dados.
Usar resultMap para lidar com inconsistências entre a estrutura da tabela do banco de dados e as propriedades da classe de entidade.
Escrever casos de teste para verificar a funcionalidade de um mapper MyBatis.
Modificar a Classe de Entidade
Nesta etapa, você aprenderá como modificar as propriedades e os métodos da classe Course para corresponder à estrutura da tabela do banco de dados.
Abra o arquivo Course.java localizado no diretório /org/lanqiao/pojo.
Altere as propriedades cNo, cName e teacher para id, name e lecturer, respectivamente.
Modifique os métodos getter e setter de acordo para corresponder aos novos nomes das propriedades.
Salve as alterações no arquivo Course.java.
package org.lanqiao.pojo;
/**
* Define a Course class
* @author lanqiao
*/
public class Course {
// Change course number to id
private int id;
// Change course name to name
private String name;
// Change lecturer to lecturer
private String lecturer;
public Course() {
}
public Course(int id, String name, String lecturer) {
this.id = id;
this.name = name;
this.lecturer = lecturer;
}
// Modify getter and setter method names
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getLecturer() {
return lecturer;
}
public void setLecturer(String lecturer) {
this.lecturer = lecturer;
}
@Override
public String toString() {
return "Course ID: " + this.id + "\tCourse Name: " + this.name + "\tLecturer: " + this.lecturer;
}
}
Nesta etapa, você aprenderá como implementar os casos de teste para verificar a funcionalidade do CourseMapper.
Abra o arquivo MyBatisTest.java localizado no diretório /org/lanqiao/test.
Implemente o método testSelectAllCourses() para recuperar e exibir todas as informações do curso.
Implemente o método testSelectCourseById() para recuperar as informações do curso com o número do curso 2 e armazenar o resultado em um HashMap.
package org.lanqiao.test;
import java.io.IOException;
import java.io.Reader;
import java.util.List;
import java.util.Map;
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.lanqiao.mapper.CourseMapper;
import org.lanqiao.pojo.Course;
public class MyBatisTest {
SqlSessionFactory sessionFactory = null;
SqlSession session = null;
@Before
public void before() throws IOException{
String resource = "mybatis-config.xml";
// Load the 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 testSelectAllCourses() 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.selectAllCourses();
System.out.println(courses);
session.close();
}
@Test
public void testSelectCourseById() {
// Obtain an instance of CourseMapper
CourseMapper mapper = session.getMapper(CourseMapper.class);
// Call the method to query the information of the course with course number 2
Map<String, Object> course = mapper.selectCourseById(2);
// Output the query result
System.out.println(course);
}
}
Ao seguir estas etapas, você modificou com sucesso a classe de entidade, configurou a interface do mapper e o arquivo XML, e implementou os casos de teste para recuperar informações do curso usando MyBatis.
Executar
Finalmente, você pode compilar e executar o código no terminal e verificar os arquivos de teste com Maven, usando os seguintes comandos:
cd MyBatisCourseDemo03
mvn test
Você pode consultar os seguintes efeitos de execução: