> 技术文档 > spring boot整合mybatis

spring boot整合mybatis

项目结构

controller

package com.qcby.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.GetMapping;@Controllerpublic class HomeController { @GetMapping(\"/\") public String index() { return \"index\"; }}
package com.qcby.controller;import com.qcby.domain.Student;import com.qcby.domain.Teacher;import com.qcby.service.StudentService;import com.qcby.service.TeacherService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.*;@Controller@RequestMapping(\"/students\")public class StudentController { @Autowired private StudentService studentService; @Autowired private TeacherService teacherService; // 显示所有学生 @GetMapping public String list(Model model) { model.addAttribute(\"students\", studentService.findAll()); return \"student/list\"; } // 显示添加学生表单 @GetMapping(\"/add\") public String addForm(Model model) { model.addAttribute(\"student\", new Student()); model.addAttribute(\"teachers\", teacherService.findAll()); return \"student/form\"; } // 保存学生 @PostMapping(\"/save\") public String save(@ModelAttribute Student student) { if (student.getId() == null) { studentService.insert(student); } else { studentService.update(student); } return \"redirect:/students\"; } // 显示编辑学生表单 @GetMapping(\"/edit/{id}\") public String editForm(@PathVariable Integer id, Model model) { model.addAttribute(\"student\", studentService.findById(id)); model.addAttribute(\"teachers\", teacherService.findAll()); return \"student/form\"; } // 删除学生 @GetMapping(\"/delete/{id}\") public String delete(@PathVariable Integer id) { studentService.delete(id); return \"redirect:/students\"; } // 按教师ID查询学生 @GetMapping(\"/by-teacher/{teacherId}\") public String listByTeacher(@PathVariable Integer teacherId, Model model) { model.addAttribute(\"students\", studentService.findByTeacherId(teacherId)); Teacher teacher = teacherService.findById(teacherId); model.addAttribute(\"teacherName\", teacher != null ? teacher.getName() : \"未知教师\"); return \"student/list-by-teacher\"; }}
package com.qcby.controller;import com.qcby.domain.Teacher;import com.qcby.service.TeacherService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.*;@Controller@RequestMapping(\"/teachers\")public class TeacherController { @Autowired private TeacherService teacherService; // 显示所有教师 @GetMapping public String list(Model model) { model.addAttribute(\"teachers\", teacherService.findAll()); return \"teacher/list\"; } // 显示添加教师表单 @GetMapping(\"/add\") public String addForm(Model model) { model.addAttribute(\"teacher\", new Teacher()); return \"teacher/form\"; } // 保存教师 @PostMapping(\"/save\") public String save(@ModelAttribute Teacher teacher) { if (teacher.getId() == null) { teacherService.insert(teacher); } else { teacherService.update(teacher); } return \"redirect:/teachers\"; } // 显示编辑教师表单 @GetMapping(\"/edit/{id}\") public String editForm(@PathVariable Integer id, Model model) { model.addAttribute(\"teacher\", teacherService.findById(id)); return \"teacher/form\"; } // 删除教师 @GetMapping(\"/delete/{id}\") public String delete(@PathVariable Integer id) { teacherService.delete(id); return \"redirect:/teachers\"; }}

domain

package com.qcby.domain;import lombok.Data;import java.time.LocalDateTime;@Datapublic class Student { private Integer id; private String name; private Integer age; private String gender; private String grade; private Integer teacherId; private String teacherName; // 用于显示教师姓名,不映射到数据库 private LocalDateTime createTime; private LocalDateTime updateTime;}
package com.qcby.domain;import lombok.Data;import java.time.LocalDateTime;@Datapublic class Teacher { private Integer id; private String name; private Integer age; private String subject; private String phone; private String email; private LocalDateTime createTime; private LocalDateTime updateTime;}

mapper

package com.qcby.mapper;import com.qcby.domain.Student;import org.apache.ibatis.annotations.Mapper;import java.util.List;@Mapperpublic interface StudentMapper { // 查询所有学生 List findAll(); // 根据ID查询学生 Student findById(Integer id); // 添加学生 int insert(Student student); // 更新学生 int update(Student student); // 删除学生 int delete(Integer id); // 根据教师ID查询学生 List findByTeacherId(Integer teacherId);}
package com.qcby.mapper;import com.qcby.domain.Teacher;import org.apache.ibatis.annotations.Mapper;import java.util.List;@Mapperpublic interface TeacherMapper { // 查询所有教师 List findAll(); // 根据ID查询教师 Teacher findById(Integer id); // 添加教师 int insert(Teacher teacher); // 更新教师 int update(Teacher teacher); // 删除教师 int delete(Integer id);}

service

package com.qcby.service;import com.qcby.domain.Student;import java.util.List;public interface StudentService { List findAll(); Student findById(Integer id); int insert(Student student); int update(Student student); int delete(Integer id); List findByTeacherId(Integer teacherId);}
package com.qcby.service;import com.qcby.domain.Teacher;import java.util.List;public interface TeacherService { List findAll(); Teacher findById(Integer id); int insert(Teacher teacher); int update(Teacher teacher); int delete(Integer id);}
package com.qcby.service.impl;import com.qcby.domain.Student;import com.qcby.mapper.StudentMapper;import com.qcby.service.StudentService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import java.util.List;@Servicepublic class StudentServiceImpl implements StudentService { @Autowired private StudentMapper studentMapper; @Override public List findAll() { return studentMapper.findAll(); } @Override public Student findById(Integer id) { return studentMapper.findById(id); } @Override public int insert(Student student) { return studentMapper.insert(student); } @Override public int update(Student student) { return studentMapper.update(student); } @Override public int delete(Integer id) { return studentMapper.delete(id); } @Override public List findByTeacherId(Integer teacherId) { return studentMapper.findByTeacherId(teacherId); }}
package com.qcby.service.impl;import com.qcby.domain.Teacher;import com.qcby.mapper.TeacherMapper;import com.qcby.service.TeacherService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import java.util.List;@Servicepublic class TeacherServiceImpl implements TeacherService { @Autowired private TeacherMapper teacherMapper; @Override public List findAll() { return teacherMapper.findAll(); } @Override public Teacher findById(Integer id) { return teacherMapper.findById(id); } @Override public int insert(Teacher teacher) { return teacherMapper.insert(teacher); } @Override public int update(Teacher teacher) { return teacherMapper.update(teacher); } @Override public int delete(Integer id) { return teacherMapper.delete(id); }}

mapper.xml

             SELECT s.*, t.name as teacher_name FROM student s  LEFT JOIN teacher t ON s.teacher_id = t.id ORDER BY s.id DESC   SELECT s.*, t.name as teacher_name FROM student s  LEFT JOIN teacher t ON s.teacher_id = t.id WHERE s.id = #{id}   SELECT s.*, t.name as teacher_name FROM student s  LEFT JOIN teacher t ON s.teacher_id = t.id WHERE s.teacher_id = #{teacherId} ORDER BY s.id DESC   INSERT INTO student (name, age, gender, grade, teacher_id) VALUES (#{name}, #{age}, #{gender}, #{grade}, #{teacherId})   UPDATE student SET name = #{name}, age = #{age}, gender = #{gender}, grade = #{grade}, teacher_id = #{teacherId} WHERE id = #{id}   DELETE FROM student WHERE id = #{id} 
            SELECT * FROM teacher ORDER BY id DESC   SELECT * FROM teacher WHERE id = #{id}   INSERT INTO teacher (name, age, subject, phone, email) VALUES (#{name}, #{age}, #{subject}, #{phone}, #{email})   UPDATE teacher SET name = #{name}, age = #{age}, subject = #{subject}, phone = #{phone}, email = #{email} WHERE id = #{id}   DELETE FROM teacher WHERE id = #{id} 

html

   

请选择 男 女
请选择
取消
  学生列表 

学生列表

添加学生
返回首页
ID 姓名 年龄 性别 年级 班主任 操作
编辑 删除
  学生列表 

的学生列表

添加学生
ID 姓名 年龄 性别 年级 操作
编辑 删除
   

取消
  教师列表 

教师列表

添加教师
返回首页
ID 姓名 年龄 科目 电话 邮箱 学生 操作
查看学生 编辑 删除
  教师学生管理系统 

教师学生管理系统

简单高效的教学管理解决方案


properties

# ?????server.port=8080# ?????spring.datasource.url=jdbc:mysql://localhost:3306/teacher_student_management?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghaispring.datasource.username=rootspring.datasource.password=rootspring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver# MyBatis??mybatis.mapper-locations=classpath:mapper/*.xmlmybatis.type-aliases-package=com.qcby.domain# Thymeleaf??spring.thymeleaf.cache=falsespring.thymeleaf.mode=HTML5spring.thymeleaf.encoding=UTF-8spring.thymeleaf.servlet.content-type=text/html# ????logging.level.com.example.mapper=debug