Введение
В этом проекте вы научитесь выполнять операции CRUD (Create, Read, Update, Delete) с таблицей расписания курсов с использованием MyBatis, популярного Java-фреймворка для работы с данными.
👀 Предварительный просмотр


🎯 Задачи
В этом проекте вы научитесь:
- настраивать проект и настраивать необходимые зависимости;
- улучшать класс сущности
Course, добавляя свойства, конструкторы, методы setter/getter и другое содержимое; - улучшать файл конфигурации MyBatis
mybatis-config.xml; - реализовывать интерфейс
CourseMapperи соответствующие методы; - реализовывать SQL-отображение в файле
CourseMapper.xml; - реализовывать тестовые случаи в файле
MyBatisTest.java.
🏆 Достижения
После завершения этого проекта вы сможете:
- использовать MyBatis для взаимодействия с базой данных MySQL;
- определять классы сущностей и настраивать файлы отображения MyBatis;
- выполнять операции CRUD с использованием MyBatis;
- писать юнит-тесты для проверки функциональности приложения.
Настройка проекта
В этом шаге вы научитесь настраивать проект и настраивать необходимые зависимости.
- Откройте файл
pom.xmlв проектеMyBatisCourseDemo02. - Добавьте следующие зависимости в раздел
<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>
- Добавьте следующие свойства в раздел
<properties>для настройки кодировки символов и версии 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>
- Добавьте следующий раздел
<build>для включения XML-отображений в 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>
Улучшить класс сущности
В этом шаге вы улучшите класс сущности Course, добавив свойства, конструкторы, методы setter/getter и другое содержимое.
- Откройте файл
Course.javaв директории/src/main/java/org/labex/pojo. - Добавьте следующие свойства в класс
Course:
private int cNo;
private String cName;
private String teacher;
- Добавьте следующий конструктор:
public Course() {
}
public Course(int cNo, String cName, String teacher) {
this.cNo = cNo;
this.cName = cName;
this.teacher = teacher;
}
- Добавьте следующие методы getter и 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;
}
- Добавьте следующий метод
toString():
@Override
public String toString() {
return "Course number: " + this.cNo + "\tCourse name: " + this.cName + "\tTeacher: " + this.teacher;
}
Улучшить конфигурацию MyBatis
В этом шаге вы улучшите файл конфигурации MyBatis mybatis-config.xml.
- Откройте файл
mybatis-config.xmlв директорииsrc/main/resources. - Добавьте следующий раздел
<typeAliases>для определения псевдонимов для классов сущностей:
<typeAliases>
<package name="org.labex.pojo"/>
</typeAliases>
- Настройте среду数据源 в разделе
<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>
- Зарегистрируйте файл SQL-отображения
CourseMapper.xmlв разделе<mappers>:
<mappers>
<package name="org.labex.mapper" />
</mappers>
Реализовать интерфейс CourseMapper
В этом шаге вы реализуете интерфейс CourseMapper и соответствующие методы.
- Откройте файл
CourseMapper.javaв пакетеorg.labex.mapper. - Добавьте следующие методы в интерфейс
CourseMapper:
import java.util.List;
import org.labex.pojo.Course;
public interface CourseMapper {
/**
* Запросить всю информацию о курсах
*/
public List<Course> queryAllCourse();
/**
* Вставить новый курс
* @param course
*/
public int insertCourse(Course course);
/**
* Обновить информацию о курсе
* @param course
*/
public int updateCourse(Course course);
/**
* Удалить информацию о курсе по номеру курса
* @param course
*/
public int deleteCourse(int cNo);
}
Реализовать SQL - маппинг
В этом шаге вы реализуете SQL-отображение в файле CourseMapper.xml.
- Откройте файл
CourseMapper.xmlв директорииsrc/main/java/org/labex/mapper. - Добавьте следующие SQL-отображение инструкции:
<!-- Получить всю информацию о курсах -->
<select id="queryAllCourse" resultType="org.labex.pojo.Course">
select * from course
</select>
<!-- Вставить новый курс -->
<insert id="insertCourse" parameterType="org.labex.pojo.Course">
insert into course(cNo,cName,teacher)
values(#{cNo},#{cName},#{teacher})
</insert>
<!-- Обновить информацию о курсе на основе номера курса -->
<update id="updateCourse" parameterType="org.labex.pojo.Course">
update course set cName=#{cName},teacher=#{teacher}
where cNo=#{cNo}
</update>
<!-- Удалить информацию о курсе на основе номера курса -->
<delete id="deleteCourse" parameterType="int">
delete from course where cNo=#{cNo}
</delete>
Реализовать тестовые случаи
В этом шаге вы реализуете тестовые случаи в файле MyBatisTest.java.
- Откройте файл
MyBatisTest.javaв директории/src/test/java/org/labex/test. - Добавьте следующие тестовые методы:
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";
// Загрузить файл конфигурации MyBatis
Reader reader = Resources.getResourceAsReader(resource);
// Создать SqlSessionFactory
sessionFactory = new SqlSessionFactoryBuilder().build(reader);
// Создать объект SqlSession, способный выполнять SQL-запросы в файлах SQL-отображения
session = sessionFactory.openSession();
}
@Test
public void testSel() throws IOException{
// Вызвать метод getMapper() в session, чтобы вернуть объект интерфейса
CourseMapper cMapper = session.getMapper(CourseMapper.class);
// Выполнить запрос и вернуть все объекты Course
List<Course> courses = cMapper.queryAllCourse();
System.out.println(courses);
session.close();
}
@Test
public void testIns() throws IOException{
// Вызвать метод getMapper() в session, чтобы вернуть объект интерфейса
CourseMapper cMapper = session.getMapper(CourseMapper.class);
Course course = new Course(8,"Искусственный интеллект","Tom");
int i = cMapper.insertCourse(course);
session.commit();
System.out.println((i!=0? "Данные успешно добавлены":"Не удалось добавить данные"));
session.close();
}
@Test
public void testUpd() throws IOException{
// Вызвать метод getMapper() в session, чтобы вернуть объект интерфейса
CourseMapper cMapper = session.getMapper(CourseMapper.class);
Course course = new Course(1,"Тестирование ПО","Jack");
int i = cMapper.updateCourse(course);
session.commit();
System.out.println((i!=0? "Данные успешно обновлены":"Не удалось обновить данные"));
session.close();
}
@Test
public void testDEl() throws IOException{
// Вызвать метод getMapper() в session, чтобы вернуть объект интерфейса
CourseMapper cMapper = session.getMapper(CourseMapper.class);
int i = cMapper.deleteCourse(7);
session.commit();
System.out.println((i!=0? "Данные успешно удалены":"Не удалось удалить данные"));
session.close();
}
}
После завершения этих шагов вы успешно настроили проект, улучшили класс сущности, настроили параметры MyBatis, реализовали интерфейс CourseMapper и реализовали тестовые случаи. Теперь вы можете запустить тесты, чтобы проверить функциональность приложения.
Запуск
Далее скомпилируйте и запустите в терминале, и используйте Maven, чтобы проверить тестовые файлы:
cd MyBatisCourseDemo02
mvn test
Вы можете обратиться к шагам ниже, чтобы проверить результаты испытаний.


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



