diff --git a/src/main/java/com/pyc/campus/config/MysqlConfig.java b/src/main/java/com/pyc/campus/config/MysqlConfig.java new file mode 100644 index 0000000000000000000000000000000000000000..f190f44a87836782307c67839c8ba1379b7e4e12 --- /dev/null +++ b/src/main/java/com/pyc/campus/config/MysqlConfig.java @@ -0,0 +1,25 @@ +package com.pyc.campus.config; + +import org.hibernate.dialect.MySQL8Dialect; +import org.springframework.stereotype.Component; + +/** + * @author 御承扬 + * @product IntelliJ IDEA + * @project campus + * @file MysqlConfig + * @pack com.pyc.campus.config + * @date 2021/1/29 + * @time 10:27 + * @E-mail 2923616405@qq.com + **/ + +@Component +@SuppressWarnings("decription") +public class MysqlConfig extends MySQL8Dialect { + + @Override + public String getTableTypeString(){ + return "ENGINE=InnoDB DEFAULT CHARSET=utf8"; + } +} diff --git a/src/main/java/com/pyc/campus/controller/GradeController.java b/src/main/java/com/pyc/campus/controller/GradeController.java index adba160159d5db52b4be64637af81d0de192ca63..ea1a86e16d7b6cd03bf9fe89d152d6f9d20c4b4f 100644 --- a/src/main/java/com/pyc/campus/controller/GradeController.java +++ b/src/main/java/com/pyc/campus/controller/GradeController.java @@ -5,12 +5,16 @@ import com.pyc.campus.dao.StudentRepository; import com.pyc.campus.domain.Grade; import com.pyc.campus.domain.Msg; import com.pyc.campus.domain.Student; +import com.pyc.campus.service.GradeService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; import org.springframework.data.repository.query.Param; import org.springframework.security.core.context.SecurityContextImpl; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import javax.servlet.http.HttpSession; import java.util.List; @@ -29,23 +33,32 @@ import java.util.List; @Controller public class GradeController { + final + GradeService gradeService; + final GradeRepository gradeRepository; final StudentRepository studentRepository; - public GradeController(GradeRepository gradeRepository,StudentRepository studentRepository){ + public GradeController(GradeRepository gradeRepository, StudentRepository studentRepository, + GradeService gradeService){ this.gradeRepository = gradeRepository; this.studentRepository = studentRepository; + this.gradeService = gradeService; } @RequestMapping("/desc") - public String desc(Model model, HttpSession session){ + public String desc(Model model, HttpSession session, + @RequestParam(value = "pageNum", defaultValue = "0") int pageNum, + @RequestParam(value = "pageSize", defaultValue = "3") int pageSize){ SecurityContextImpl securityContext = (SecurityContextImpl)session.getAttribute("SPRING_SECURITY_CONTEXT"); String currentStudentId = ((UserDetails) securityContext.getAuthentication().getPrincipal()).getUsername(); + model.addAttribute("prefix","/desc"); if(gradeRepository.findAllByStudentID(currentStudentId)!=null){ try { - List gradeListDesc = gradeRepository.findAllByStudentIDOrderByGradeDesc(currentStudentId); + Page gradeListDesc = gradeService.getGradeListByStuIDDESCByGrade(pageNum,pageSize, + currentStudentId); model.addAttribute("gradeItems", gradeListDesc); int minGrade = gradeRepository.findMinGrade(currentStudentId); model.addAttribute("minGrade", minGrade); @@ -76,12 +89,16 @@ public class GradeController { return "page/QueryGrade"; } @RequestMapping("/asc") - public String asc(Model model, HttpSession session){ + public String asc(Model model, HttpSession session, + @RequestParam(value = "pageNum", defaultValue = "0") int pageNum, + @RequestParam(value = "pageSize", defaultValue = "3") int pageSize){ SecurityContextImpl securityContext = (SecurityContextImpl)session.getAttribute("SPRING_SECURITY_CONTEXT"); String currentStudentId = ((UserDetails) securityContext.getAuthentication().getPrincipal()).getUsername(); + model.addAttribute("prefix","/asc"); if(gradeRepository.findAllByStudentID(currentStudentId)!=null){ try { - List gradeListAsc = gradeRepository.findAllByStudentIDOrderByGradeAsc(currentStudentId); + Page gradeListAsc = gradeService.getGradeListByStuIDASCByGrade(pageNum,pageSize, + currentStudentId); int minGrade = gradeRepository.findMinGrade(currentStudentId); int maxGrade = gradeRepository.findMaxGrade(currentStudentId); int sumCredit = gradeRepository.findSumCredit(currentStudentId); @@ -110,12 +127,15 @@ public class GradeController { } @RequestMapping("/toQueryGrade") - public String toQueryGrade(Model model, HttpSession session){ + public String toQueryGrade(Model model, HttpSession session, + @RequestParam(value = "pageNum", defaultValue = "0") int pageNum, + @RequestParam(value = "pageSize", defaultValue = "3") int pageSize){ SecurityContextImpl securityContext = (SecurityContextImpl)session.getAttribute("SPRING_SECURITY_CONTEXT"); String currentStudentId = ((UserDetails) securityContext.getAuthentication().getPrincipal()).getUsername(); + model.addAttribute("prefix","/toQueryGrade"); if(gradeRepository.findAllByStudentID(currentStudentId)!=null){ try { - List gradeList = gradeRepository.findAllByStudentID(currentStudentId); + Page gradeList = gradeService.getGradeListByStuID(pageNum,pageSize,currentStudentId); int minGrade = gradeRepository.findMinGrade(currentStudentId); int maxGrade = gradeRepository.findMaxGrade(currentStudentId); int sumCredit = gradeRepository.findSumCredit(currentStudentId); diff --git a/src/main/java/com/pyc/campus/dao/GradeRepository.java b/src/main/java/com/pyc/campus/dao/GradeRepository.java index 50f0a56929372c3af5685740f8a746ffef3eee8e..0d68262ee82eb044334a8a87dca4c167e3dae654 100644 --- a/src/main/java/com/pyc/campus/dao/GradeRepository.java +++ b/src/main/java/com/pyc/campus/dao/GradeRepository.java @@ -9,6 +9,8 @@ package com.pyc.campus.dao; import com.pyc.campus.domain.Grade; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; @@ -19,6 +21,13 @@ import java.util.List; public interface GradeRepository extends JpaRepository { List findAllByTermAndStudentID(String term,String studentId); List findAllByStudentID(String studentId); + + @Query("select g from Grade g where g.studentID=:stuId") + Page getAllByStudentID(@Param("stuId") String stuID, Pageable pageable); + + Page getAllByStudentIDOrderByGradeDesc(@Param("stuId")String stuID, Pageable pageable); + + Page getAllByStudentIDOrderByGradeAsc(@Param("stuId")String stuId, Pageable pageable); @RestResource(path="findAllByName", rel="findAllByName") List findAllByName(@Param("name")String name); // 按成绩降序排列 diff --git a/src/main/java/com/pyc/campus/domain/Grade.java b/src/main/java/com/pyc/campus/domain/Grade.java index 988da302a50e8069967965cfd0e7b4b8973343f7..2d2519418bb2a9206f87b4056e8af620fef00aad 100644 --- a/src/main/java/com/pyc/campus/domain/Grade.java +++ b/src/main/java/com/pyc/campus/domain/Grade.java @@ -7,23 +7,34 @@ package com.pyc.campus.domain; +import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; +import java.io.Serializable; @Entity -public class Grade { +public class Grade implements Serializable { @Id @GeneratedValue long id; + @Column(nullable = true,unique = true) private String term; // 学期 + @Column(nullable = true,unique = true) private String studentID; // 学号 + @Column(nullable = true,unique = true) private String name; // 学生姓名 + @Column(nullable = true,unique = true) private String courseCode; // 课程编号 + @Column(nullable = true,unique = true) private String courseName; // 课程名称 + @Column(nullable = true,unique = true) private int grade; // 课程成绩 + @Column(nullable = true,unique = true) private float gpa; // 绩点 + @Column(nullable = true,unique = true) private int learnHour; //学时 + @Column(nullable = true,unique = true) private int credit; // 学分 public Grade(){ super(); @@ -122,4 +133,19 @@ public class Grade { this.term = term; } + @Override + public String toString() { + return "Grade{" + + "id=" + id + + ", term='" + term + '\'' + + ", studentID='" + studentID + '\'' + + ", name='" + name + '\'' + + ", courseCode='" + courseCode + '\'' + + ", courseName='" + courseName + '\'' + + ", grade=" + grade + + ", gpa=" + gpa + + ", learnHour=" + learnHour + + ", credit=" + credit + + '}'; + } } diff --git a/src/main/java/com/pyc/campus/service/GradeService.java b/src/main/java/com/pyc/campus/service/GradeService.java new file mode 100644 index 0000000000000000000000000000000000000000..1513854bcaa101b43cadb915737611b6b05855c2 --- /dev/null +++ b/src/main/java/com/pyc/campus/service/GradeService.java @@ -0,0 +1,24 @@ +package com.pyc.campus.service; + +import com.pyc.campus.domain.Grade; +import org.springframework.data.domain.Page; + +/** + * @author 御承扬 + * @product IntelliJ IDEA + * @project campus + * @file GradeService + * @pack com.pyc.campus.service + * @date 2021/1/29 + * @time 10:34 + * @E-mail 2923616405@qq.com + **/ +public interface GradeService { + + Page getGradeListByStuID(int pageNum, int pageSize,String stuId); + + Page getGradeListByStuIDDESCByGrade(int pageNum, int pageSize,String stuId); + + Page getGradeListByStuIDASCByGrade(int pageNum, int pageSize,String stuId); + +} diff --git a/src/main/java/com/pyc/campus/service/MailServiceImpl.java b/src/main/java/com/pyc/campus/service/MailServiceImpl.java index 6b7be682d76e327b607bdd2322407206afdbdb19..0a1ac5cfef63d3727d651846d461f74db1d63ee9 100644 --- a/src/main/java/com/pyc/campus/service/MailServiceImpl.java +++ b/src/main/java/com/pyc/campus/service/MailServiceImpl.java @@ -7,6 +7,7 @@ package com.pyc.campus.service; +import com.pyc.campus.service.impl.MailService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.mail.SimpleMailMessage; @@ -14,7 +15,7 @@ import org.springframework.mail.javamail.JavaMailSender; import org.springframework.stereotype.Service; @Service -public class MailServiceImpl implements MailService{ +public class MailServiceImpl implements MailService { private final Logger logger = LoggerFactory.getLogger(this.getClass()); /** diff --git a/src/main/java/com/pyc/campus/service/impl/GradeServiceImpl.java b/src/main/java/com/pyc/campus/service/impl/GradeServiceImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..6136f9c8732aae82c2222249048c40614523fb5a --- /dev/null +++ b/src/main/java/com/pyc/campus/service/impl/GradeServiceImpl.java @@ -0,0 +1,48 @@ +package com.pyc.campus.service.impl; + +import com.pyc.campus.dao.GradeRepository; +import com.pyc.campus.domain.Grade; +import com.pyc.campus.service.GradeService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Sort; +import org.springframework.stereotype.Service; + +/** + * @author 御承扬 + * @product IntelliJ IDEA + * @project campus + * @file GradeServiceImpl + * @pack com.pyc.campus.service.impl + * @date 2021/1/29 + * @time 10:39 + * @E-mail 2923616405@qq.com + **/ + +@Service +public class GradeServiceImpl implements GradeService { + + @Autowired + GradeRepository gradeRepository; + + @Override + public Page getGradeListByStuID(int pageNum, int pageSize, String stuId) { + Pageable pageable = PageRequest.of(pageNum,pageSize); + return gradeRepository.getAllByStudentID(stuId,pageable); + } + + @Override + public Page getGradeListByStuIDDESCByGrade(int pageNum, int pageSize, String stuId) { + Pageable pageable = PageRequest.of(pageNum, pageSize); + return gradeRepository.getAllByStudentIDOrderByGradeDesc(stuId,pageable); + } + + @Override + public Page getGradeListByStuIDASCByGrade(int pageNum, int pageSize, String stuId) { + + Pageable pageable = PageRequest.of(pageNum,pageSize); + return gradeRepository.getAllByStudentIDOrderByGradeAsc(stuId,pageable); + } +} diff --git a/src/main/java/com/pyc/campus/service/MailService.java b/src/main/java/com/pyc/campus/service/impl/MailService.java similarity index 90% rename from src/main/java/com/pyc/campus/service/MailService.java rename to src/main/java/com/pyc/campus/service/impl/MailService.java index 8584a6fe8dde29eb3d5ef987b1561a78845ff73a..a0ad9ab8d7a11fd247c861176d99c9146349513d 100644 --- a/src/main/java/com/pyc/campus/service/MailService.java +++ b/src/main/java/com/pyc/campus/service/impl/MailService.java @@ -6,7 +6,7 @@ //E-mail:2923616405@qq.com -package com.pyc.campus.service; +package com.pyc.campus.service.impl; public interface MailService { /** diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 03aa60a87997c9395d46e8fa106085dbbb656f77..329a09f153ff20962802b1605216b2c35f86d84f 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -10,10 +10,12 @@ spring.datasource.username=pyc spring.datasource.password=root19537 #spring.jpa.database-platform=org.hibernate.dialect.SQLServerDialect #spring.jpa.open-in-view=true +spring.jpa.properties.hibernate.dialect = com.pyc.campus.config.MysqlConfig logging.config=src/main/resources/logback-spring.xml logging.level.com.pyc.campus.aspect.WebLogAspect = info logging.level.root=info logging.level.web=info +spring.jpa.properties.hibernate.hbm2ddl.auto=update spring.jpa.hibernate.ddl-auto=update spring.jpa.show-sql=true spring.jackson.serialization.indent-output=true diff --git a/src/main/resources/templates/page/QueryGrade.html b/src/main/resources/templates/page/QueryGrade.html index 6511c52773a8457cbe66d74f5c6cf8962357d68f..293cfe5f1ee03ea3115c67933e1969bd2cc2eb7d 100644 --- a/src/main/resources/templates/page/QueryGrade.html +++ b/src/main/resources/templates/page/QueryGrade.html @@ -94,7 +94,7 @@
-
+
+ @@ -120,6 +121,7 @@ + @@ -132,6 +134,36 @@
序号 学年学期 学号 姓名
1
+

@@ -153,7 +185,7 @@

- +
顶部
底部