教师新增功能
创建教师信息表
SQL CREATE TABLE teacher ( id int(10) NOT NULL AUTO_INCREMENT COMMENT '主键ID', username varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '用户名', password varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '密码', name varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '姓名', sex varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '性别', title varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '职称', speciality_id int(10) DEFAULT NULL COMMENT '专业ID', role varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '角色', avatar varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '头像', PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='教师信息';
|
entity
TypeScript package com.example.entity;
@Data public class Teacher extends Account{ // 职称 private String title; // 所属专业ID private Integer specialityId; // 性别 private Character sex;
}
|
前端
修改Manager.vue,在管理员信息下面添加教师信息

代码
XML <el-menu-item index="/teacher"><el-icon><Avatar /></el-icon><span>教师信息</span></el-menu-item>
|
在views/manager下面添加Teacher.vue
[Teacher.vue]
添加teacher路由
修改router目录下的index.js

代码
TypeScript { path: 'teacher', component: () => import('@/views/manager/Teacher.vue')},
|
后端
TeacherController
Java package com.example.controller;
import com.example.common.Result; import com.example.entity.Teacher; import com.example.service.TeacherService; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/** * 教师模块前端请求的接口入口 */ @RestController @RequestMapping("/teacher") public class TeacherController { @Resource private TeacherService teacherService;
/** * 新增 */ @PostMapping("/add") public Result add(@RequestBody Teacher teacher) { teacherService.add(teacher); return Result.success(); }
}
|
TeacherService
TypeScript package com.example.service;
import com.example.entity.Teacher;
public interface TeacherService { void add(Teacher teacher); }
|
TeacherServiceImpl
Java package com.example.service.impl;
import cn.hutool.core.util.ObjectUtil; import com.example.entity.Teacher; import com.example.exception.CustomException; import com.example.mapper.TeacherMapper; import com.example.service.TeacherService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;
@Service public class TeacherServiceImpl implements TeacherService { @Autowired private TeacherMapper teacherMapper; @Override public void add(Teacher teacher) { // 账号唯一验证 Teacher dbTeacher = teacherMapper.selectByUsername(teacher.getUsername()); if (ObjectUtil.isNotEmpty(dbTeacher)) { throw new CustomException("用户名已存在"); } // 密码为空时,默认密码为123456 if (ObjectUtil.isEmpty(teacher.getPassword())) { teacher.setPassword("123456"); } // 设置角色 teacher.setRole("TEACHER"); teacherMapper.insert(teacher); } }
|
TeacherMapper
Java package com.example.mapper;
import com.example.entity.Teacher; import org.apache.ibatis.annotations.Select;
public interface TeacherMapper { void insert(Teacher teacher);
@Select("select * from teacher where username = #{username}") Teacher selectByUsername(String username); }
|
TeacherMapper.xml
XML <?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="com.example.mapper.TeacherMapper">
<insert id="insert" parameterType="com.example.entity.Teacher" useGeneratedKeys="true"> insert into teacher (username, password, name, avatar, role, sex, title, speciality_id) values (#{username}, #{password}, #{name}, #{avatar}, #{role}, #{sex}, #{title}, #{specialityId}) </insert>
</mapper>
|
教师信息的分页查询和条件查询
创建专业表speciality
由于展示教师信息的时候要展示专业信息,所以要进行连表查询,把专业表先做出来
SQL CREATE TABLE `speciality` ( `id` int NOT NULL AUTO_INCREMENT COMMENT '主键ID', `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '专业名称', `college_id` int NULL DEFAULT NULL COMMENT '学院ID', PRIMARY KEY (`id`) USING BTREE );
|
修改实体类Teacher
由于页面要展示专业名称,所以添加specialityName字段
TypeScript //专业名称 private String specialityName;
|
TeacherController
TypeScript /** * 分页查询 */ @GetMapping("/selectPage") public Result selectPage(Teacher teacher, @RequestParam(defaultValue = "1") Integer pageNum, @RequestParam(defaultValue = "5") Integer pageSize) { PageInfo<Teacher> pageInfo = teacherService.selectPage(teacher, pageNum, pageSize); return Result.success(pageInfo); }
|
TeacherServiceImpl
TypeScript @Override public PageInfo<Teacher> selectPage(Teacher teacher, Integer pageNum, Integer pageSize) { List<Teacher> teacherList = new ArrayList<>(); //分页插件使用 PageHelper.startPage(pageNum, pageSize); if (ObjectUtil.isNotEmpty(teacher.getName())){ teacherList = teacherMapper.selectByName(teacher.getName()); }else { teacherList = teacherMapper.selectAll(); } return PageInfo.of(teacherList); }
|
TeacherMapper
Python @Select("select teacher.*, speciality.name as specialityName from teacher " + "left join speciality on teacher.speciality_id = speciality.id " + "where teacher.name like concat('%', #{name}, '%')") List<Teacher> selectByName(String name);
@Select("SELECT t.*,s.`name` specialityName FROM teacher t LEFT JOIN speciality s ON t.speciality_id=s.id") List<Teacher> selectAll();
|
教师信息的更新功能
TeacherController
TypeScript @PutMapping("/update") public Result update(@RequestBody Teacher teacher) { teacherService.updateById(teacher); return Result.success(); }
|
TeacherServiceImpl
TypeScript @Override public void update(Teacher teacher) { //新增的时候判断账号的唯一性 //1.通过ID获取原teacher,然后判断当前的账号是否和原账号一致 Teacher dbTeacher = teacherMapper.selectById(teacher.getId()); //原账号 String oldUsername = dbTeacher.getUsername(); //新账号 String newUsername = teacher.getUsername(); if (!oldUsername.equals(newUsername)){ Teacher myteacher = teacherMapper.selectByUsername(teacher.getUsername()); if (ObjectUtil.isNotNull(myteacher)){ throw new CustomException("用户名已存在"); } } teacherMapper.updateById(teacher); }
|
TeacherMapper
TypeScript @Select("select * from teacher where id=#{id}") Teacher selectById(Integer id);
@Update("update teacher set username = #{username}, password = #{password}, name = #{name}, avatar = #{avatar}, role = #{role}, " + "sex = #{sex}, title = #{title}, speciality_id = #{specialityId} where id = #{id}") void updateById(Teacher teacher);
|
教师信息的删除功能
TeacherController
TypeScript @DeleteMapping("/deleteById/{id}") public Result deleteById(@PathVariable Integer id) { teacherService.deleteById(id); return Result.success(); }
|
TeacherServiceImpl
TypeScript @Override public void deleteById(Integer id) { teacherMapper.deleteById(id); }
|
TeacherMapper
TypeScript @Delete("delete from teacher where id = #{id}") void deleteById(Integer id);
|
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
评论(0)