0-1搭建springboot+vue的教务管理系统(核心源码)

发布于:2025-07-15 ⋅ 阅读:(14) ⋅ 点赞:(0)

 

目录

后端核心代码:

control层

service 层

mapper


 

后端核心代码:

control层:

classControlsImpl
package com.itheima.controls.impl;

import com.itheima.mapper.ClassMapper;
import com.itheima.pojo.Clazz;
import com.itheima.pojo.Emp;
import com.itheima.pojo.PageResult;
import com.itheima.pojo.Result;
import com.itheima.service.ClassService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.*;

import java.beans.PropertyEditorSupport;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.util.List;

@RestController
@RequestMapping("/clazzs")
public class ClassControlsImpl {
    private static final Logger log = LoggerFactory.getLogger(DeptControlsImpl.class);

    @Autowired
    private ClassService classService;
    @InitBinder
    public void initBinder(WebDataBinder binder) {
        binder.registerCustomEditor(LocalDate.class, new PropertyEditorSupport() {
            @Override
            public void setAsText(String text) throws IllegalArgumentException {
                if (text == null || text.trim().isEmpty()) {
                    setValue(null);
                } else {
                    try {
                        setValue(LocalDate.parse(text.trim(), DateTimeFormatter.ofPattern("yyyy-MM-dd")));
                    } catch (DateTimeParseException e) {
                        throw new IllegalArgumentException("Invalid date format: " + text);
                    }
                }
            }
        });
    }
    @GetMapping
    public Result page(@RequestParam(defaultValue = "1") Integer page,
                       @RequestParam(defaultValue = "10") Integer pageSize,
                       String name,
                      @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate begin,
                       @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate end){
        log.info("分页查询:{}{}{},,,,,;,{}{}{}",page,pageSize,name,begin,end);
        PageResult<Clazz> pageResult =classService.page(page,pageSize,name,begin,end);
        return Result.success(pageResult);
    }
    @DeleteMapping("/{id}")
    public Result deleteById(@PathVariable Integer id){
        classService.deleteById(id);
        return Result.success();
    }
    @PostMapping
    public Result insert(@RequestBody Clazz clazz){
        log.info("要添加的班级信息",clazz);
        classService.insert(clazz);
        return Result.success();

    }

    @GetMapping("/{id}")
    public Result getInfo(@PathVariable Integer id){
        log.info("查询回显返回的id为:{}",id);
        Clazz clazz = classService.getInfo(id);
        return Result.success(clazz);
    }

    @PutMapping
    public Result update(@RequestBody Clazz clazz){
        log.info("要修改的数据为:{}",clazz);
        classService.update(clazz);
        return Result.success();
    }
    @GetMapping("/list")
    public Result selectList(){
       List<Clazz> clazz = classService.selectList();
        return Result.success(clazz);
    }
}

deptControlsImpl
package com.itheima.controls.impl;

import com.itheima.anno.Log;
import com.itheima.pojo.Dept;
import com.itheima.pojo.Result;
import com.itheima.service.DeptService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
public class DeptControlsImpl {
    private static final Logger log = LoggerFactory.getLogger(DeptControlsImpl.class);
    @Autowired
    private DeptService deptservice;
    @GetMapping("/depts")
    public Result list(){
//        System.out.println("查看全部部门数据");
        log.info("查看全部数据");
       List<Dept> depts = deptservice.findAll();
        return Result.success(depts);
    }
    // 通过id删除
    @Log
    @DeleteMapping("/depts")
    public Result deleteById(Integer id){
        log.info("要删除的部门id:{}",id);
        deptservice.deleteById(id);
        return Result.success();
    }
    // 通过前端传的部门名称(namne)添加数据、
    @Log
    @PostMapping("/depts")
    public Result add(@RequestBody Dept dept){
        log.info("要添加的部门:{}",dept);
        deptservice.add(dept);
        return Result.success();
    }
    // 通过点击要修改的部门让后端返回前端要修改的部门信息
    // id回显
    @GetMapping("/depts/{id}")
    public Result getInfo(@PathVariable Integer id){
        Dept dept = deptservice.getInfo(id);
        return Result.success(dept);
    }
    @Log
    @PutMapping("/depts")
    public Result update(@RequestBody Dept dept){
        log.info("要更新的部门:{}",dept);
        deptservice.update(dept);
        return Result.success();
    }
}
EmpControlsImpl
package com.itheima.controls.impl;

import com.itheima.pojo.Emp;
import com.itheima.pojo.PageResult;
import com.itheima.pojo.Result;
import com.itheima.service.EmpService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.*;

import java.beans.PropertyEditorSupport;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.util.List;

@RequestMapping("/emps")
@RestController
public class EmpControlsImpl {
    @Autowired
    private EmpService empService;
    // 日志
    // private static final Logger log = LoggerFactory.getLogger(EmpControlsIMpl.class);
    private static final Logger log = LoggerFactory.getLogger(EmpControlsImpl.class);
    // 处理前端传回来的日期格式转换
    @InitBinder
    public void initBinder(WebDataBinder binder) {
        binder.registerCustomEditor(LocalDate.class, new PropertyEditorSupport() {
            @Override
            public void setAsText(String text) throws IllegalArgumentException {
                if (text == null || text.trim().isEmpty()) {
                    setValue(null);
                } else {
                    try {
                        setValue(LocalDate.parse(text.trim(), DateTimeFormatter.ofPattern("yyyy-MM-dd")));
                    } catch (DateTimeParseException e) {
                        throw new IllegalArgumentException("Invalid date format: " + text);
                    }
                }
            }
        });
    }

    @GetMapping
    public Result page(@RequestParam Integer page, @RequestParam Integer pageSize,
                       @RequestParam String name,
                       @RequestParam(required = false) Integer gender,
                       @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate begin,
                       @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate end
                       ){
        log.info("分页查询:{}{}{}{}{}{}",page,pageSize,name,gender,begin,end);
        PageResult<Emp> pageResult = empService.page(page,pageSize,name,gender,begin,end);
        log.info("hahaha{}",pageResult);
        return Result.success(pageResult);
    }
    @PostMapping
    public Result save(@RequestBody Emp emp){
        log.info("要添加的数据{}",emp);
        empService.save(emp);
        return Result.success();
    }
    @DeleteMapping
    public Result deleteByIds(@RequestParam List<Integer> ids){
        log.info("要删除的id为{}",ids);
        empService.deleteByIds(ids);
        return Result.success();
    }

    @GetMapping("/{id}")
    public Result getInfo(@PathVariable Integer id){
        log.info("根据回显查询的员工id:{}",id);
        Emp emp = empService.getInfo(id);
        log.info("要修改的数据为:{}",emp);

        return Result.success(emp);
    }

    @PutMapping
    public Result update(@RequestBody Emp emp){
        log.info("要修改的数据为:{}",emp);
        empService.update(emp);

        return Result.success();
    }


    //////////////////////////
    @GetMapping("/list")
    public Result select(){
        List<Emp> emp = empService.select();
        log.info("查询所有员工信息{}",emp);

        return Result.success(emp);
    }

}
LoginCOntrolsImpl
package com.itheima.controls.impl;

import com.itheima.pojo.Emp;
import com.itheima.pojo.LoginInfo;
import com.itheima.pojo.Result;
import com.itheima.service.EmpService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class LoginControlsImpl {
    private static final Logger log = LoggerFactory.getLogger(EmpControlsImpl.class);
    @Autowired
    private EmpService empService;
    @PostMapping("/login")
    public Result login(@RequestBody Emp emp){
        log.info("登录:{}",emp);
        LoginInfo loginInfo = empService.login(emp);
        if (loginInfo != null){
            return Result.success(loginInfo);
        }
        return Result.error("用户名或者密码错误");

    }

}
ReportControlsImpl
package com.itheima.controls.impl;

import com.itheima.pojo.JobOption;
import com.itheima.pojo.Result;
import com.itheima.pojo.StudentOption;
import com.itheima.service.ReportService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;
import java.util.Map;

@RestController
@RequestMapping("/report")
public class ReportControlsImpl {

    @Autowired
    private ReportService reportService;
    private static final Logger log = LoggerFactory.getLogger(EmpControlsImpl.class);

    @GetMapping("/empJobData")
    public Result getEmpJobData(){
        log.info("统计员工职位人数");
        JobOption jobOption = reportService.getEmpJobData();
        return Result.success(jobOption);
    }
    @GetMapping("/empGenderData")
    public Result getEmpGenderData(){
        log.info("统计员工性别人数");
       List<Map<String,Object>> mapList = reportService.getEmpGenderData();
       return Result.success(mapList);
    }


    @GetMapping("/studentCountData")
    public Result getStudentMessageData(){
        log.info("学员信息统计");
        StudentOption studentOption = reportService.getStudentMessageData();
        return Result.success(studentOption);
    }
    @GetMapping("/studentDegreeData")
    public Result getStudentDegreeData(){
        log.info("学院学历统计");
        List<Map<String,Object>> mapList = reportService.getStudentDegreeData();
        return Result.success(mapList);
    }
}

StudentControlsImpl
package com.itheima.controls.impl;

import com.itheima.pojo.PageResult;
import com.itheima.pojo.Result;
import com.itheima.pojo.Student;
import com.itheima.service.StudentService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RequestMapping("/students")
@RestController
public class StudentControlsImpl {
    @Autowired
    private StudentService studentService;
    private static final Logger log = LoggerFactory.getLogger(EmpControlsImpl.class);

    @GetMapping
    public Result page(@RequestParam(defaultValue = "1") Integer page,
                       @RequestParam(defaultValue = "10") Integer pageSize,
                       String name,Integer degree,Integer clazzId){
        log.info("分页查询:{}{}{}{}{}{}",page,pageSize,name,degree,clazzId);
        PageResult<Student> pageResult = studentService.page(page,pageSize,name,degree,clazzId);
        return Result.success(pageResult);
    }
    @PostMapping
    public Result insert(@RequestBody Student student){
        log.info("前端添加的学生信息:{}",student);
        studentService.insert(student);
        return Result.success();
    }

    @GetMapping("/{id}")
    public Result getInfo(@PathVariable Integer id){
        log.info("id回显的数据是:{}",id);
        Student student = studentService.getInfo(id);
        return Result.success(student);
    }
    @PutMapping
    public Result update(@RequestBody Student student){
        log.info("要修改的学生信息:{}",student);
        studentService.update(student);
        return Result.success();

    }
    @DeleteMapping("/{ids}")
    public Result deleteByIds(@PathVariable List<Integer> ids){
        log.info("要删除的学生id为:{}",ids);
        studentService.deleteByIds(ids);
        return Result.success();
    }


    @PutMapping("/violation/{id}/{score}")
    public Result violent(@PathVariable Integer id,
                          @PathVariable Integer score){
        log.info("传进来的要处理的违纪信息为:{},{}",id,score);
        studentService.violent(id,score);
        return Result.success();
    }
}
UploadControlsImpl
package com.itheima.controls.impl;

import com.itheima.pojo.Result;
import com.itheima.utils.AliyunOSSOperator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.UUID;

@RestController
public class UploadControlsImpl {
    private static final Logger log = LoggerFactory.getLogger(EmpControlsImpl.class);
    @Autowired
    private AliyunOSSOperator aliyunOSSOperator;
//    本地磁盘存储方案
//    @PostMapping("/upload")
//    public Result upload(String name, Integer age, MultipartFile file) throws IOException {
//        log.info("接收参数:{},{},{}",name,age,file);
//        String originalFilename = file.getOriginalFilename();
//        String newFileName = UUID.randomUUID().toString()+originalFilename.substring(originalFilename.lastIndexOf("."));
//        file.transferTo(new File("D:/image/" + newFileName));
//        return Result.success();
//    }

    @PostMapping("/upload")
    public Result upload(MultipartFile file) throws Exception{
        log.info("文件上传:{}",file.getOriginalFilename());
        String url = aliyunOSSOperator.upload(file.getBytes(),file.getOriginalFilename());
        log.info("文件上传OSS,url:{}",url);
        return Result.success(url);
    }
}






service 层

package com.itheima.service.impl;

import com.itheima.exception.ClassNotEmptyException;
import com.itheima.mapper.ClassMapper;
import com.itheima.mapper.EmpMapper;
import com.itheima.mapper.StudentMapper;
import com.itheima.pojo.Clazz;
import com.itheima.pojo.PageResult;
import com.itheima.service.ClassService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

@Service
public class ClassServiceImpl implements ClassService {
    @Autowired
    private ClassMapper classMapper;
    @Autowired
    private EmpMapper empMapper;
    @Autowired
    private StudentMapper studentMapper;
//    @Transactional(rollbackFor = {Exception.class})
    @Override
    public PageResult<Clazz> page(Integer page, Integer pageSize, String name, LocalDate begin, LocalDate end) {
        Integer start = (page-1)*pageSize;
        Long total = classMapper.total(name,begin,end);
        List<Clazz> rows = classMapper.page(start,pageSize,name,begin,end);
        PageResult<Clazz> pageResult = new PageResult<Clazz>(total,rows);
        pageResult.getRows().forEach(item->{
            if(LocalDate.now().compareTo(item.getBeginDate())<0){
                item.setStatus("未开课");
            } else if (LocalDate.now().compareTo(item.getEndDate())>0) {
                item.setStatus("已结课");
            }else {
                item.setStatus("再读中");
            }
        });
        return pageResult;
    }

    @Override
    public void deleteById(Integer id) {
        Integer count=0;
        count = studentMapper.selectById(id);
            if (count>0) {
                throw new ClassNotEmptyException("对不起,该班级下有学生,不能删除!");
        }
        classMapper.deleteById(id);
    }

    @Override
    public void insert(Clazz clazz) {
        clazz.setCreateTime(LocalDateTime.now());
        clazz.setUpdateTime(LocalDateTime.now());
        classMapper.insert(clazz);
    }

    @Override
    public Clazz getInfo(Integer id) {
        return classMapper.getInfo(id);
    }

    @Override
    public void update(Clazz clazz) {
        clazz.setUpdateTime(LocalDateTime.now());
        classMapper.update(clazz);
    }

    @Override
    public List<Clazz> selectList() {
        return classMapper.selectList();
    }
}
////////////////////////////////////////////
package com.itheima.service.impl;

import com.itheima.exception.ClassNotEmptyException;
import com.itheima.mapper.ClassMapper;
import com.itheima.mapper.EmpMapper;
import com.itheima.mapper.StudentMapper;
import com.itheima.pojo.Clazz;
import com.itheima.pojo.PageResult;
import com.itheima.service.ClassService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

@Service
public class ClassServiceImpl implements ClassService {
    @Autowired
    private ClassMapper classMapper;
    @Autowired
    private EmpMapper empMapper;
    @Autowired
    private StudentMapper studentMapper;
//    @Transactional(rollbackFor = {Exception.class})
    @Override
    public PageResult<Clazz> page(Integer page, Integer pageSize, String name, LocalDate begin, LocalDate end) {
        Integer start = (page-1)*pageSize;
        Long total = classMapper.total(name,begin,end);
        List<Clazz> rows = classMapper.page(start,pageSize,name,begin,end);
        PageResult<Clazz> pageResult = new PageResult<Clazz>(total,rows);
        pageResult.getRows().forEach(item->{
            if(LocalDate.now().compareTo(item.getBeginDate())<0){
                item.setStatus("未开课");
            } else if (LocalDate.now().compareTo(item.getEndDate())>0) {
                item.setStatus("已结课");
            }else {
                item.setStatus("再读中");
            }
        });
        return pageResult;
    }

    @Override
    public void deleteById(Integer id) {
        Integer count=0;
        count = studentMapper.selectById(id);
            if (count>0) {
                throw new ClassNotEmptyException("对不起,该班级下有学生,不能删除!");
        }
        classMapper.deleteById(id);
    }

    @Override
    public void insert(Clazz clazz) {
        clazz.setCreateTime(LocalDateTime.now());
        clazz.setUpdateTime(LocalDateTime.now());
        classMapper.insert(clazz);
    }

    @Override
    public Clazz getInfo(Integer id) {
        return classMapper.getInfo(id);
    }

    @Override
    public void update(Clazz clazz) {
        clazz.setUpdateTime(LocalDateTime.now());
        classMapper.update(clazz);
    }

    @Override
    public List<Clazz> selectList() {
        return classMapper.selectList();
    }
}
//////////////////////////////////////////////////
package com.itheima.service.impl;

import com.itheima.mapper.EmpLogMapper;
import com.itheima.pojo.EmpLog;
import com.itheima.service.EmpLogService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

@Transactional(propagation = Propagation.REQUIRES_NEW)
@Service
public class EmpLogServiceImpl implements EmpLogService {
    @Autowired
    private EmpLogMapper empLogMapper;
    @Override
    public void insertLog(EmpLog empLog) {
        empLogMapper.insert(empLog);
    }
}
///////////////////////////////////////////////////
package com.itheima.service.impl;

import com.itheima.mapper.EmpLogMapper;
import com.itheima.pojo.EmpLog;
import com.itheima.service.EmpLogService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

@Transactional(propagation = Propagation.REQUIRES_NEW)
@Service
public class EmpLogServiceImpl implements EmpLogService {
    @Autowired
    private EmpLogMapper empLogMapper;
    @Override
    public void insertLog(EmpLog empLog) {
        empLogMapper.insert(empLog);
    }
}
////////////////////////////////////////////////////////
package com.itheima.service.impl;

import com.itheima.mapper.OperateMapper;
import com.itheima.pojo.OperateLog;
import com.itheima.pojo.PageResult;
import com.itheima.service.OperateService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class OperateLogServiceImpl implements OperateService {
    @Autowired
    private OperateMapper operateMapper;
    @Override
    public PageResult<OperateLog> selectLogList(Integer page, Integer pageSize) {

        Long total = Long.valueOf(operateMapper.total());
        Integer start = (page-1)*pageSize;
        List<OperateLog> operateLogs = operateMapper.selectLogs(start,pageSize);
        return new PageResult<>(total,operateLogs);
    }
}
//////////////////////////////////////////////////


package com.itheima.service.impl;

import com.itheima.mapper.EmpMapper;
import com.itheima.mapper.StudentMapper;
import com.itheima.pojo.JobOption;
import com.itheima.pojo.StudentOption;
import com.itheima.service.EmpService;
import com.itheima.service.ReportService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;

@Service
public class ReportServiceImpl implements ReportService {
    @Autowired
    private EmpMapper empMapper;
    @Autowired
    private StudentMapper studentMapper;
    @Override
    public JobOption getEmpJobData() {
        List<Map<String,Object>> list = empMapper.countEmpJobData();
        List<Object> keyList = list.stream().map(item->item.get("jobName")).toList();
        List<Object> valueList = list.stream().map(item->item.get("count")).toList();
        return new JobOption(keyList,valueList);
    }

    @Override
    public List<Map<String, Object>> getEmpGenderData() {
        return empMapper.countEmpGenderData();
    }

    @Override
    public StudentOption getStudentMessageData() {
        List<Map<String,Object>> list = studentMapper.getStudentMessageData();
        List<Object> listKeys = list.stream().map(item->item.get("name")).toList();
        List<Object> listValues = list.stream().map(item->item.get("count")).toList();
        return new StudentOption(listKeys,listValues);
    }

    @Override
    public List<Map<String, Object>> getStudentDegreeData() {
        return studentMapper.getStudentDegreeData();
    }
}

///////////////////////////////////////////////
package com.itheima.service.impl;

import com.itheima.mapper.StudentMapper;
import com.itheima.pojo.PageResult;
import com.itheima.pojo.Student;
import com.itheima.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;
import java.util.List;

@Service
public class StudentServiceImpl implements StudentService {
    @Autowired
    private StudentMapper studentMapper;
    @Override
    public PageResult<Student> page(Integer page, Integer pageSize, String name, Integer degree, Integer clazzId) {
        Long total = studentMapper.total(name,degree,clazzId);
        Integer start = (page-1)*pageSize;
        List<Student> students = studentMapper.page(start,pageSize,name,degree,clazzId);
        return new PageResult<Student>(total,students);
    }

    @Override
    public void insert(Student student) {
        student.setUpdateTime(LocalDateTime.now());
        student.setCreateTime(LocalDateTime.now());
        studentMapper.insert(student);
    }

    @Override
    public Student getInfo(Integer id) {
        return studentMapper.getInfo(id);
    }

    @Override
    public void update(Student student) {
        student.setUpdateTime(LocalDateTime.now());
        studentMapper.update(student);
    }

    @Override
    public void deleteByIds(List<Integer> ids) {
        studentMapper.deleteByIds(ids);
    }

    @Override
    public void violent(Integer id,Integer score) {
        Student student = studentMapper.selectStudentViolentMessage(id);
        student.setViolationCount((short) (student.getViolationCount()+1));
        student.setViolationScore((short) (student.getViolationScore()+score));
        studentMapper.update(student);
    }
}



mapper: 

package com.itheima.mapper;

import com.itheima.pojo.Clazz;
import com.itheima.pojo.PageResult;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.time.LocalDate;
import java.util.List;

@Mapper
public interface ClassMapper {


    @Select("SELECT COUNT(c.id) FROM clazz c " +
            "WHERE (c.name LIKE CONCAT('%', #{name}, '%') OR #{name} IS NULL) " +
            "AND (c.begin_date BETWEEN #{begin} AND #{end} OR (#{begin} IS NULL AND #{end} IS NULL))")
    Long total(String name, LocalDate begin, LocalDate end);

    List<Clazz> page(Integer start, Integer pageSize, String name, LocalDate begin, LocalDate end);

    void deleteById(Integer id);

    void insert(Clazz clazz);

    Clazz getInfo(Integer id);

    void update(Clazz clazz);

    List<Clazz> selectList();
}
//////////////////////////////////////////////
package com.itheima.mapper;

import com.itheima.pojo.Dept;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface DeptMapper {
    @Select("select * from dept order by update_time desc")
    public List<Dept> findAll();
    // 删除员工
    @Delete("delete from dept where id=#{id}")
    public void deleteById(Integer id);
    // 通过前端返回的部门信息添加部门
    @Insert("insert into dept (name,create_time,update_time) values (#{name},#{createTime},#{updateTime})")
    void add(Dept dept);
    // 回显查询
    @Select("select * from dept where id=#{id}")
    Dept getInfo(Integer id);
    // 修改数据
    @Update("update dept set name=#{name},update_time=#{updateTime} where id=#{id}")
    void update(Dept dept);


}

////////////////////////////////////////////////////////////
package com.itheima.mapper;


import com.itheima.pojo.EmpExpr;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface EmpExprMapper {

   public void insertBatch(List<EmpExpr> exprList);

   void deleteByEmpIds(List<Integer> ids);
}
///////////////////////////////////////////////////////////////////
package com.itheima.mapper;

import com.itheima.pojo.EmpLog;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

@Mapper
public interface EmpLogMapper {

    @Insert("insert into emp_log (operate_time, info) values (#{operateTime}, #{info})")
    public void insert(EmpLog empLog);

}
//////////////////////////////////////////////////////////////////
package com.itheima.mapper;

import com.itheima.pojo.Emp;
import org.apache.ibatis.annotations.*;

import java.time.LocalDate;
import java.util.List;
import java.util.Map;

@Mapper
public interface EmpMapper {
    @Select("SELECT COUNT(*) FROM emp e " +
            "LEFT JOIN dept d ON e.dept_id = d.id " +
            "WHERE (e.name LIKE CONCAT('%', #{name}, '%') OR #{name} IS NULL) " +
            "AND (e.gender = #{gender} OR #{gender} IS NULL) " +
            "AND (e.entry_date BETWEEN #{begin} AND #{end} " +
            "     OR (#{begin} IS NULL AND #{end} IS NULL))")
    public Long count(String name, Integer gender, LocalDate begin,LocalDate end);
//    @Select("select e.*,d.name deptName from emp e left join dept d on e.dept_id=d.id where e.name like concat('%',#{name},'%') and e.gender=#{gender} and e.entry_date between #{begin} and #{end} order by e.entry_date DESC limit #{start},#{pageSize}")
    public List<Emp> list(Integer start, Integer pageSize, String name, Integer gender, LocalDate begin,LocalDate end);
// 主键返回
    @Options(useGeneratedKeys = true,keyProperty = "id")
    @Insert("insert into emp(username,name,gender,phone,job,salary,image,entry_date,dept_id,create_time,update_time) values (#{username},#{name},#{gender},#{phone},#{job},#{salary},#{image},#{entryDate},#{deptId},#{createTime},#{updateTime})")
    public void insert(Emp emp);

    void deleteByIds(List<Integer> ids);

    Emp getInfo(Integer id);

    void updateEmp(Emp emp);
    @MapKey("jobName")
    List<Map<String,Object>> countEmpJobData();

    @MapKey("name")
    List<Map<String, Object>> countEmpGenderData();

    ///////////////////////////////////////////
    // 学生管理

    List<Emp> select();
    Integer selectDeptStudentMessage(Integer id);


    Emp selectByUsernameAndPassword(Emp emp);
}

/////////////////////////////////////////////////////
package com.itheima.mapper;

import com.itheima.pojo.OperateLog;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

@Mapper
public interface OperateMapper {
    void deleteLog(List<Integer> ids);

    @Select("select count(*) from operate_log")
    Integer total();

    @Select("select o.id,o.operate_emp_id,o.operate_time,o.class_name,o.method_name,o.method_params,o.return_value,o.cost_time,e.name as operateEmpName from operate_log o left join emp e on e.id = o.operate_emp_id limit #{start},#{pageSize}")
    List<OperateLog> selectLogs(Integer start, Integer pageSize);
}
////////////////////////////////////////////////////////////////////
package com.itheima.mapper;

import com.itheima.pojo.Student;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;
import java.util.Map;

@Mapper
public interface StudentMapper {
    // 删除判断
    Integer selectById(Integer id);

    @Select("SELECT COUNT(*) FROM student " +
            "WHERE (#{name} IS NULL OR name LIKE CONCAT('%', #{name}, '%')) " +
            "AND (#{degree} IS NULL OR degree = #{degree}) " +
            "AND (#{clazzId} IS NULL OR clazz_id = #{clazzId})")
    Long total(String name, Integer degree, Integer clazzId);

    List<Student> page(Integer start, Integer pageSize, String name, Integer degree, Integer clazzId);

    @Insert("insert into student(name,no,gender,phone,id_card,is_college," +
            "address,degree,graduation_date,clazz_id" +
            ",create_time,update_time) values (#{name},#{no}," +
            "#{gender},#{phone},#{idCard},#{isCollege},#{address},#{degree},#{graduationDate}," +
            "#{clazzId},#{createTime},#{updateTime})")
    void insert(Student student);

    Student getInfo(Integer id);

    void update(Student student);

    void deleteByIds(List<Integer> ids);

    Student selectStudentViolentMessage(Integer id);

    @MapKey("name")
    List<Map<String, Object>> getStudentMessageData();
    @MapKey("name")
    List<Map<String, Object>> getStudentDegreeData();
}



需要源码的评论区扣666.

 


网站公告

今日签到

点亮在社区的每一天
去签到