个人作业第二阶段3
完成教师功能页功能总结汇表后端代码:
数据库:
CREATE TABLE summary_statistics (
id INT PRIMARY KEY AUTO_INCREMENT,
class_name VARCHAR(50),
user_id INT,
username VARCHAR(50),
total_count INT,
FOREIGN KEY (user_id) REFERENCES user(user_id)
);
实体类:
package com.demo.entity;
public class SummaryStatistics {
private int id;
private String className;
private int userId;
private String username;
private int totalCount;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className;
}
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public int getTotalCount() {
return totalCount;
}
public void setTotalCount(int totalCount) {
this.totalCount = totalCount;
}
@Override
public String toString() {
return "SummaryStatistics{" +
"id=" + id +
", className='" + className + '\'' +
", userId=" + userId +
", username='" + username + '\'' +
", totalCount=" + totalCount +
'}';
}
}
Mapper接口:
package com.demo.mapper;
import com.demo.entity.SummaryStatistics;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Select;
import java.util.List;
public interface SummaryStatisticsMapper {
// 添加统计记录
void add(SummaryStatistics summaryStatistics);
// 更新统计记录
void update(SummaryStatistics summaryStatistics);
// 查询所有统计记录
@Select("SELECT * FROM summary_statistics ORDER BY total_count DESC")
List<SummaryStatistics> selectAll();
// 根据用户ID查询统计记录
@Select("SELECT * FROM summary_statistics WHERE user_id = #{userId}")
SummaryStatistics selectByUserId(int userId);
// 清空统计表
@Delete("DELETE FROM summary_statistics")
void clearAll();
// 生成统计数据
@Select("INSERT INTO summary_statistics (class_name, user_id, username, total_count) " +
"SELECT '学生', u.user_id, u.username, COUNT(ds.id) " +
"FROM user u " +
"LEFT JOIN daily_summaries ds ON u.user_id = ds.user_id " +
"WHERE u.role = 0 " +
"GROUP BY u.user_id, u.username")
void generateStatistics();
}
Mapper 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.demo.mapper.SummaryStatisticsMapper">
<insert id="add" parameterType="com.demo.entity.SummaryStatistics" useGeneratedKeys="true" keyProperty="id">
INSERT INTO summary_statistics (
class_name,
user_id,
username,
total_count
) VALUES (
#{className},
#{userId},
#{username},
#{totalCount}
)
</insert>
<update id="update" parameterType="com.demo.entity.SummaryStatistics">
UPDATE summary_statistics
SET class_name = #{className},
total_count = #{totalCount}
WHERE user_id = #{userId}
</update>
</mapper>
Service类:
package com.demo.service;
import com.demo.entity.SummaryStatistics;
import com.demo.mapper.SummaryStatisticsMapper;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class SummaryStatisticsService {
@Resource
private SummaryStatisticsMapper summaryStatisticsMapper;
public void generateStatistics() {
// 先清空统计表
summaryStatisticsMapper.clearAll();
// 重新生成统计数据
summaryStatisticsMapper.generateStatistics();
}
public List<SummaryStatistics> selectAll() {
return summaryStatisticsMapper.selectAll();
}
public SummaryStatistics selectByUserId(int userId) {
return summaryStatisticsMapper.selectByUserId(userId);
}
}
Controller类:
package com.demo.controller;
import com.demo.common.Result;
import com.demo.entity.SummaryStatistics;
import com.demo.service.SummaryStatisticsService;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/statistics")
public class SummaryStatisticsController {
@Resource
private SummaryStatisticsService summaryStatisticsService;
@GetMapping("/generate")
public Result generateStatistics() {
try {
summaryStatisticsService.generateStatistics();
return Result.success();
} catch (Exception e) {
return Result.error("500", "生成统计数据失败: " + e.getMessage());
}
}
@GetMapping("/selectAll")
public Result selectAll() {
List<SummaryStatistics> list = summaryStatisticsService.selectAll();
return Result.success(list);
}
@GetMapping("/selectByUserId/{userId}")
public Result selectByUserId(@PathVariable int userId) {
SummaryStatistics statistics = summaryStatisticsService.selectByUserId(userId);
return Result.success(statistics);
}
}

浙公网安备 33010602011771号