Введение
В этом проекте вы научитесь использовать MyBatis для извлечения информации о курсах из базы данных и сопоставления результатов с пользовательским Java-объектом. Также вы узнаете, как обрабатывать несоответствия между структурой таблицы базы данных и свойствами класса сущности.
👀 Предварительный просмотр


🎯 Задачи
В этом проекте вы научитесь:
- Как изменить свойства и методы класса сущности, чтобы соответствовать структуре таблицы базы данных.
- Как настроить интерфейс маппера для определения методов запроса информации о курсах.
- Как настроить XML-файл маппера для определения SQL-запросов и сопоставления результатов.
- Как реализовать тестовые случаи для проверки функциональности маппера.
🏆 Достижения
После завершения этого проекта вы сможете:
- Использовать MyBatis для взаимодействия с базой данных и извлечения данных.
- Использовать
resultMapдля обработки несоответствий между структурой таблицы базы данных и свойствами класса сущности. - Писать тестовые случаи для проверки функциональности маппера MyBatis.
Изменить класс сущности
В этом шаге вы научитесь изменять свойства и методы класса Course, чтобы соответствовать структуре таблицы базы данных.
- Откройте файл
Course.java, расположенный в директории/org/lanqiao/pojo. - Измените свойства
cNo,cNameиteacherсоответственно наid,nameиlecturer. - Соответственно измените методы-getтеры и методы-сеттеры, чтобы соответствовать новым именам свойств.
- Сохраните изменения в файле
Course.java.
package org.lanqiao.pojo;
/**
* Определить класс Course
* @author lanqiao
*/
public class Course {
// Изменить номер курса на id
private int id;
// Изменить название курса на name
private String name;
// Изменить преподавателя на lecturer
private String lecturer;
public Course() {
}
public Course(int id, String name, String lecturer) {
this.id = id;
this.name = name;
this.lecturer = lecturer;
}
// Изменить имена методов-getтеров и методов-сеттеров
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;
}
}
Настроить интерфейс маппера
В этом шаге вы научитесь настраивать интерфейс CourseMapper для определения методов запроса информации о курсах.
- Откройте файл
CourseMapper.java, расположенный в директории/org/lanqiao/mapper. - Измените интерфейс, чтобы включить следующие методы:
selectAllCourses(): Извлекает всю информацию о курсах.selectCourseById(int id): Извлекает информацию о курсе с указанным идентификатором курса.
package org.lanqiao.mapper;
import java.util.List;
import java.util.Map;
import org.lanqiao.pojo.Course;
public interface CourseMapper {
List<Course> selectAllCourses();
Map<String, Object> selectCourseById(int id);
}
Настроить XML-файл маппера
В этом шаге вы научитесь настраивать файл CourseMapper.xml для определения SQL-запросов и сопоставления результатов.
- Откройте файл
CourseMapper.xml, расположенный в корневой директории проекта. - Определите
resultMap, чтобы указать сопоставление между столбцами таблицы базы данных и свойствами классаCourse. - Определите SQL-запросы для методов в интерфейсе
CourseMapper.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.lanqiao.mapper.CourseMapper">
<!-- Определение resultMap -->
<resultMap id="courseResultMap" type="org.lanqiao.pojo.Course">
<id property="id" column="cNo"/>
<result property="name" column="cName"/>
<result property="lecturer" column="teacher"/>
</resultMap>
<!-- Запрос всей информации о курсах -->
<select id="selectAllCourses" resultMap="courseResultMap">
SELECT * FROM course;
</select>
<!-- Запрос информации о курсе с номером курса 2 -->
<select id="selectCourseById" resultType="java.util.HashMap">
SELECT * FROM course WHERE cNo = #{id};
</select>
</mapper>
Реализовать тестовые сценарии
В этом шаге вы научитесь реализовывать тестовые случаи для проверки функциональности CourseMapper.
- Откройте файл
MyBatisTest.java, расположенный в директории/org/lanqiao/test. - Реализуйте метод
testSelectAllCourses(), чтобы извлечь и отобразить всю информацию о курсах. - Реализуйте метод
testSelectCourseById(), чтобы извлечь информацию о курсе с номером курса 2 и сохранить результат в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";
// Загрузить файл конфигурации MyBatis
Reader reader = Resources.getResourceAsReader(resource);
// Создать SqlSession factory
sessionFactory = new SqlSessionFactoryBuilder().build(reader);
// Создать объект SqlSession, способный выполнять SQL-операторы в SQL-отображении файлах
session = sessionFactory.openSession();
}
@Test
public void testSelectAllCourses() throws IOException{
// Вызвать метод getMapper() в session, чтобы вернуть объект интерфейса
CourseMapper cMapper = session.getMapper(CourseMapper.class);
// Выполнить запрос и вернуть все объекты Course
List<Course> courses = cMapper.selectAllCourses();
System.out.println(courses);
session.close();
}
@Test
public void testSelectCourseById() {
// Получить экземпляр CourseMapper
CourseMapper mapper = session.getMapper(CourseMapper.class);
// Вызвать метод для запроса информации о курсе с номером курса 2
Map<String, Object> course = mapper.selectCourseById(2);
// Вывести результат запроса
System.out.println(course);
}
}
Следуя этим шагам, вы успешно изменили класс сущности, настроили интерфейс маппера и XML-файл и реализовали тестовые случаи для извлечения информации о курсах с использованием MyBatis.
Запуск
Наконец, вы можете скомпилировать и запустить код в терминале и проверить тестовые файлы с использованием Maven, используя следующие команды:
cd MyBatisCourseDemo03
mvn test
Вы можете обратиться к следующим результатам выполнения:


Резюме
Поздравляем! Вы завершили этот проект. Вы можете практиковаться в более многих лабораторных работах в LabEx, чтобы улучшить свои навыки.



