В этом проекте вы научитесь использовать 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): Извлекает информацию о курсе с указанным идентификатором курса.
В этом шаге вы научитесь настраивать файл 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
Вы можете обратиться к следующим результатам выполнения:
We use cookies for a number of reasons, such as keeping the website reliable and secure, to improve your experience on our website and to see how you interact with it. By accepting, you agree to our use of such cookies. Privacy Policy