目录
后端核心代码:
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.