Compare commits

..

1 Commits
v1.0 ... master

Author SHA1 Message Date
wbq 4cd46c9b23 最后的修改
1 year ago

@ -7,6 +7,7 @@ import com.wbq.entity.Admin;
import com.wbq.entity.Course;
import com.wbq.entity.EnrollRequest;
import com.wbq.entity.Student;
import com.wbq.mapper.AdminCourseMapper;
import com.wbq.properties.MailProperties;
import com.wbq.result.PageResult;
import com.wbq.result.Result;
@ -49,6 +50,8 @@ public class AdminController {
@Autowired
private CourseService courseService;
@Autowired
private AdminCourseMapper adminCourseMapper;
@Autowired
private JwtUtils jwtUtils;
/*@Autowired
@ -82,7 +85,7 @@ public class AdminController {
*/
@PostMapping("/randomRollCall")
@ApiOperation("随机点名")
public Result<Student> randomRollCall(int courseId) {
public Result<StudentCourseInfoVO> randomRollCall(int courseId) {
log.info("随机点名");
return Result.success(studentService.callStudent(courseId));
}
@ -95,7 +98,7 @@ public class AdminController {
*/
@PostMapping("/callByFirstname")
@ApiOperation("根据姓氏点名")
public Result<Student> callByFirstname(int courseId, String firstname) {
public Result<StudentCourseInfoVO> callByFirstname(int courseId, String firstname) {
log.info("根据姓氏点名");
return Result.success(studentService.callStudentByFirstname(courseId, firstname));
}
@ -108,11 +111,27 @@ public class AdminController {
*/
@PostMapping("/callByLastNum")
@ApiOperation("根据学号尾数点名")
public Result<Student> callByFirstname(int courseId, int lastNum) {
public Result<StudentCourseInfoVO> callByLastNum(int courseId, int lastNum) {
log.info("根据学号尾数点名");
return Result.success(studentService.callStudentByLastNum(courseId, lastNum));
}
/**
*
* @param score
* @param enrollRequest
* @return
*/
@PutMapping("/addScore")
@ApiOperation("给学生加分")
public Result<StudentCourseInfoVO> addScore(@RequestBody EnrollRequest enrollRequest, double score) {
log.info("给课程{}的学生加分: {}, {}", enrollRequest.getCourse(),
enrollRequest.getStudent(), score);
StudentCourseInfoVO studentCourseInfoVO = studentService.addScore(enrollRequest.getCourse(),
enrollRequest.getStudent(), score);
return Result.success(studentCourseInfoVO);
}
/**
*
* @param studentDTO
@ -231,23 +250,6 @@ public class AdminController {
return Result.success();
}
/**
*
* @param score
* @param enrollRequest
* @return
*/
@PutMapping("/addScore")
@ApiOperation("给学生加分")
public Result<StudentCourseInfoVO> addScore(@RequestBody EnrollRequest enrollRequest, double score) {
log.info("给课程{}的学生加分: {}, {}", enrollRequest.getCourse(),
enrollRequest.getStudent(), score);
StudentCourseInfoVO studentCourseInfoVO = studentService.addScore(enrollRequest.getCourse(),
enrollRequest.getStudent(), score);
return Result.success(studentCourseInfoVO);
}
/**
*
* @param enrollRequest
@ -327,13 +329,14 @@ public class AdminController {
/**
*
* @param file
* @param courseId
*/
@PostMapping("/batchAddStudents")
public Result<String> batchAddStudents(@RequestParam("file")MultipartFile file) {
log.info("批量增加学生: {}", file);
public Result<String> batchAddStudents(@RequestParam("file")MultipartFile file, int courseId) {
log.info("批量增加学生到课程{}: {}", courseId, file);
try {
List<StudentDTO> studentDTOS = studentService.parseExcel(file);
studentService.batchAddStudents(studentDTOS);
studentService.batchAddStudents(studentDTOS, courseId);
return Result.success("Students upload and save successfully");
}
catch (Exception e) {
@ -350,6 +353,10 @@ public class AdminController {
public Result<Integer> createCourse(String courseDescription) {
log.info("创建新的课程:{}", courseDescription);
int courseId = courseService.addCourse(courseDescription);
int adminId = adminService.getById(BaseContext.getCurrentId()).getAdminId();
adminCourseMapper.insert(adminId, courseId);
return Result.success(courseId);
}

@ -1,6 +1,7 @@
package com.wbq.mapper;
import com.github.pagehelper.Page;
import com.wbq.dto.StudentDTO;
import com.wbq.vo.StudentCourseInfoVO;
import org.apache.ibatis.annotations.*;
@ -51,4 +52,10 @@ public interface StudentCourseMapper {
"where student_id = #{studentId} and course_id = #{courseId}")
void updateScoreByStudentIdAndCourseId(double score, int studentId, int courseId);
/**
*
* @param courseId
* @param studentDTOs
*/
void batchInsert(@Param("list") List<StudentDTO> studentDTOs, int courseId);
}

@ -49,7 +49,7 @@ public interface StudentService {
* @param courseId
* @return
*/
Student callStudent(int courseId);
StudentCourseInfoVO callStudent(int courseId);
/**
*
@ -57,7 +57,7 @@ public interface StudentService {
* @param firstname
* @return
*/
Student callStudentByFirstname(int courseId, String firstname);
StudentCourseInfoVO callStudentByFirstname(int courseId, String firstname);
/**
*
@ -65,7 +65,7 @@ public interface StudentService {
* @param lastNum
* @return
*/
Student callStudentByLastNum(int courseId, int lastNum);
StudentCourseInfoVO callStudentByLastNum(int courseId, int lastNum);
/**
*
@ -113,9 +113,10 @@ public interface StudentService {
/**
*
* @param courseId
* @param studentDTOs
*/
void batchAddStudents(List<StudentDTO> studentDTOs);
void batchAddStudents(List<StudentDTO> studentDTOs, int courseId);
/**
* Excel

@ -127,11 +127,14 @@ public class StudentServiceImpl implements StudentService {
* @return
*/
@Override
public Student callStudent(int courseId) {
public StudentCourseInfoVO callStudent(int courseId) {
List<Integer> studentIds = studentCourseMapper.getByCourseId(courseId);
Student selectedStudent = coreCall(courseId, studentIds);
return selectedStudent;
StudentCourseInfoVO studentCourseInfoVO = studentCourseMapper.getCourseInfo(selectedStudent.getStudentId(), courseId);
return studentCourseInfoVO;
}
@ -142,7 +145,7 @@ public class StudentServiceImpl implements StudentService {
* @return
*/
@Override
public Student callStudentByFirstname(int courseId, String firstname) {
public StudentCourseInfoVO callStudentByFirstname(int courseId, String firstname) {
List<Integer> studentIds = studentCourseMapper.getByCourseId(courseId);
// 筛选方式
@ -151,13 +154,16 @@ public class StudentServiceImpl implements StudentService {
Integer studentId = iterator.next();
Student student = studentMapper.getByStudentId(studentId);
String studentName = student.getName();
if (firstname.equals(Character.toString(studentName.charAt(0)))) {
if (!firstname.equals(Character.toString(studentName.charAt(0)))) {
iterator.remove(); // 使用 iterator.remove() 安全地移除元素
}
}
Student selectedStudent = coreCall(courseId, studentIds);
return selectedStudent;
StudentCourseInfoVO studentCourseInfoVO = studentCourseMapper.getCourseInfo(selectedStudent.getStudentId(), courseId);
return studentCourseInfoVO;
}
/**
@ -167,7 +173,7 @@ public class StudentServiceImpl implements StudentService {
* @return
*/
@Override
public Student callStudentByLastNum(int courseId, int lastNum) {
public StudentCourseInfoVO callStudentByLastNum(int courseId, int lastNum) {
List<Integer> studentIds = studentCourseMapper.getByCourseId(courseId);
// 筛选方式
@ -180,7 +186,10 @@ public class StudentServiceImpl implements StudentService {
}
Student selectedStudent = coreCall(courseId, studentIds);
return selectedStudent;
StudentCourseInfoVO studentCourseInfoVO = studentCourseMapper.getCourseInfo(selectedStudent.getStudentId(), courseId);
return studentCourseInfoVO;
}
/**
@ -192,19 +201,16 @@ public class StudentServiceImpl implements StudentService {
*/
@Override
public StudentCourseInfoVO addScore(CourseDTO courseDTO, StudentDTO studentDTO, double score) {
studentCourseMapper.updateScoreByStudentIdAndCourseId(score,
double oldScore = studentCourseMapper.getCourseInfo(studentDTO.getStudentId(), courseDTO.getCourseId()).getScore();
studentCourseMapper.updateScoreByStudentIdAndCourseId(oldScore + score,
studentDTO.getStudentId(),
courseDTO.getCourseId());
int callCount = studentCourseMapper.getCourseInfo(studentDTO.getStudentId(), courseDTO.getCourseId()).getCallCount();
StudentCourseInfoVO studentCourseInfoVO = StudentCourseInfoVO.builder()
.studentId(studentDTO.getStudentId())
.name(studentDTO.getName())
.callCount(callCount)
.score(score)
.build();
// 返回更新值
StudentCourseInfoVO studentCourseInfoVO = studentCourseMapper.getCourseInfo(studentDTO.getStudentId(), courseDTO.getCourseId());
// 更新记录
List<CallRecord> callRecordList = callRecordMapper.getByStudentId(studentDTO.getStudentId());
CallRecord newCallRecord = callRecordList.getFirst();
newCallRecord.setScore(score);
@ -283,17 +289,18 @@ public class StudentServiceImpl implements StudentService {
/**
*
* @param courseId
* @param studentDTOs
*/
@Override
public void batchAddStudents(List<StudentDTO> studentDTOs) {
public void batchAddStudents(List<StudentDTO> studentDTOs, int courseId) {
if (studentDTOs != null && !studentDTOs.isEmpty()) {
for (StudentDTO studentDTO : studentDTOs) {
String initPassword = "1234";
String hashedPassword = BCrypt.hashpw(initPassword, BCrypt.gensalt());
studentDTO.setPassword(hashedPassword);
}
studentMapper.batchInsert(studentDTOs);
studentCourseMapper.batchInsert(studentDTOs, courseId);
}
}

@ -12,7 +12,7 @@
<select id="existsByCourseId" resultType="boolean">
select exists (select 1 from students where course_id = #{courseId})
select exists (select 1 from course where course_id = #{courseId})
</select>
</mapper>

@ -2,4 +2,10 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTO Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.wbq.mapper.StudentCourseMapper">
<insert id="batchInsert">
insert into rollcall.studentcourse (student_id, course_id) values
<foreach collection="list" item="studentDTO" separator=",">
(#{studentDTO.studentId}, #{courseId})
</foreach>
</insert>
</mapper>

@ -1,3 +1,4 @@
/*
package com.wbq.test;
import com.wbq.dto.StudentDTO;
@ -60,3 +61,4 @@ public class StudentMapperTest {
}
}
*/

@ -9,4 +9,10 @@
#{id}
</foreach>
</select>
<select id="existsByCourseId" resultType="boolean">
select exists (select 1 from course where course_id = #{courseId})
</select>
</mapper>

@ -2,4 +2,10 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTO Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.wbq.mapper.StudentCourseMapper">
<insert id="batchInsert">
insert into rollcall.studentcourse (student_id, course_id) values
<foreach collection="list" item="studentDTO" separator=",">
(#{studentDTO.studentId}, #{courseId})
</foreach>
</insert>
</mapper>

@ -0,0 +1,3 @@
artifactId=RollCallSystem
groupId=com.wbq
version=0.0.1-SNAPSHOT

@ -0,0 +1,56 @@
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\vo\CourseVO.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\dto\StudentDTO.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\dto\AdminDTO.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\exception\BaseException.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\constant\EmailConstant.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\constant\PasswordConstant.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\exception\AccountNotFoundException.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\exception\PasswordErrorException.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\dto\AdminLoginDTO.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\vo\StudentRegistryVO.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\result\PageResult.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\interceptor\JwtTokenStudentInterceptor.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\controller\admin\AdminController.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\mapper\StudentMapper.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\dto\AdminRegistryDTO.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\service\CourseService.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\vo\StudentCourseInfoVO.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\exception\PasswordEditFailedException.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\controller\student\StudentController.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\mapper\CourseMapper.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\dto\StudentLoginDTO.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\dto\StudentPageQueryDTO.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\mapper\AdminMapper.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\config\SwaggerConfig.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\dto\CourseDTO.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\service\AdminService.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\entity\EnrollRequest.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\service\impl\StudentServiceImpl.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\dto\StudentRegistryDTO.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\vo\CourseCallVO.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\config\WebMvcConfiguration.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\mapper\CallRecordMapper.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\properties\MailProperties.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\entity\CallRecord.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\vo\StudentLoginVO.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\context\BaseContext.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\vo\AdminLoginVO.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\mapper\StudentCourseMapper.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\service\impl\CourseServiceImpl.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\result\Result.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\service\impl\AdminServiceImpl.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\utils\JwtUtils.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\entity\Student.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\properties\JwtProperties.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\exception\LoginFailedException.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\config\SecurityConfig.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\constant\JwtClaimsConstant.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\interceptor\JwtTokenAdminInterceptor.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\utils\MailUtils.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\service\StudentService.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\vo\AdminRegistryVO.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\mapper\AdminCourseMapper.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\entity\Course.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\exception\StudentNotLoginException.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\RollCallApplication.java
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\main\java\com\wbq\entity\Admin.java

@ -0,0 +1 @@
C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\src\test\java\com\wbq\test\StudentMapperTest.java

File diff suppressed because one or more lines are too long

@ -0,0 +1,56 @@
-------------------------------------------------------------------------------
Test set: com.wbq.test.StudentMapperTest
-------------------------------------------------------------------------------
Tests run: 4, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 7.616 s <<< FAILURE! -- in com.wbq.test.StudentMapperTest
com.wbq.test.StudentMapperTest.demo03 -- Time elapsed: 0.271 s <<< ERROR!
org.springframework.dao.DataIntegrityViolationException:
### Error updating database. Cause: java.sql.SQLIntegrityConstraintViolationException: Column 'password' cannot be null
### The error may exist in file [C:\Users\21080\IdeaProjects\Software_Engineering\RollCallSystem\target\classes\mapper\StudentMapper.xml]
### The error may involve defaultParameterMap
### The error occurred while setting parameters
### SQL: insert into rollcall.students (student_id, name, password) values (?, ?, ?)
### Cause: java.sql.SQLIntegrityConstraintViolationException: Column 'password' cannot be null
; Column 'password' cannot be null
at org.springframework.jdbc.support.SQLExceptionSubclassTranslator.doTranslate(SQLExceptionSubclassTranslator.java:97)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:107)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:116)
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:92)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:439)
at jdk.proxy2/jdk.proxy2.$Proxy81.insert(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:272)
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:62)
at org.apache.ibatis.binding.MapperProxy$PlainMethodInvoker.invoke(MapperProxy.java:141)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:86)
at jdk.proxy2/jdk.proxy2.$Proxy82.batchInsert(Unknown Source)
at com.wbq.test.StudentMapperTest.demo03(StudentMapperTest.java:50)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
Caused by: java.sql.SQLIntegrityConstraintViolationException: Column 'password' cannot be null
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:118)
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:912)
at com.mysql.cj.jdbc.ClientPreparedStatement.execute(ClientPreparedStatement.java:354)
at com.zaxxer.hikari.pool.ProxyPreparedStatement.execute(ProxyPreparedStatement.java:44)
at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.execute(HikariProxyPreparedStatement.java)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at org.apache.ibatis.logging.jdbc.PreparedStatementLogger.invoke(PreparedStatementLogger.java:58)
at jdk.proxy3/jdk.proxy3.$Proxy164.execute(Unknown Source)
at org.apache.ibatis.executor.statement.PreparedStatementHandler.update(PreparedStatementHandler.java:48)
at org.apache.ibatis.executor.statement.RoutingStatementHandler.update(RoutingStatementHandler.java:75)
at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:50)
at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117)
at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:76)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:61)
at jdk.proxy2/jdk.proxy2.$Proxy162.update(Unknown Source)
at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:197)
at org.apache.ibatis.session.defaults.DefaultSqlSession.insert(DefaultSqlSession.java:184)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:425)
... 10 more
Loading…
Cancel
Save