From 8d65f1b081442e856401cd4d9bcee2b6a6c1365d Mon Sep 17 00:00:00 2001 From: CesarH Date: Mon, 1 Jun 2026 17:09:10 +0800 Subject: [PATCH] =?UTF-8?q?feat(database):=20=E9=85=8D=E7=BD=AE=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93=E8=BF=9E=E6=8E=A5=E5=A4=96=E9=83=A8=E5=8C=96?= =?UTF-8?q?=E5=B9=B6=E5=AE=9E=E7=8E=B0resultMap=E6=9F=A5=E8=AF=A2=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将数据库连接信息从config.xml移至db.properties配置文件 - 在config.xml中添加properties资源引用实现配置外部化 - 为Department、Major、Student、Notice四个模块添加resultMap查询方法 - 创建TestMyBatisQueryResultMap测试类验证resultMap查询功能 - 更新SQL映射文件添加resultMap定义和相关查询语句 - 实现基于resultMap的按ID查询和查询所有数据功能 --- .../src/com/ssm/mapper/DepartmentMapper.java | 3 + .../src/com/ssm/mapper/DepartmentMapper.xml | 19 +++++ .../src/com/ssm/mapper/MajorMapper.java | 4 + .../src/com/ssm/mapper/MajorMapper.xml | 16 ++++ .../src/com/ssm/mapper/NoticeMapper.java | 4 + .../src/com/ssm/mapper/NoticeMapper.xml | 17 ++++ .../src/com/ssm/mapper/StudentMapper.java | 4 + .../src/com/ssm/mapper/StudentMapper.xml | 18 ++++ .../ssm/test/TestMyBatisQueryResultMap.java | 83 +++++++++++++++++++ grademanagement-MyBatisProject/src/config.xml | 10 ++- .../src/db.properties | 4 + 11 files changed, 178 insertions(+), 4 deletions(-) create mode 100644 grademanagement-MyBatisProject/src/com/ssm/test/TestMyBatisQueryResultMap.java create mode 100644 grademanagement-MyBatisProject/src/db.properties diff --git a/grademanagement-MyBatisProject/src/com/ssm/mapper/DepartmentMapper.java b/grademanagement-MyBatisProject/src/com/ssm/mapper/DepartmentMapper.java index 9cc743e..b98e61c 100644 --- a/grademanagement-MyBatisProject/src/com/ssm/mapper/DepartmentMapper.java +++ b/grademanagement-MyBatisProject/src/com/ssm/mapper/DepartmentMapper.java @@ -13,4 +13,7 @@ public interface DepartmentMapper { void updateDepartment(Department department); // 删除院系 void deleteDepartment(Integer deptId); + //resultMap方式查询 + Department getDepartmentMapById(Integer deptId); + List getDepartmentMapAll(); } \ No newline at end of file diff --git a/grademanagement-MyBatisProject/src/com/ssm/mapper/DepartmentMapper.xml b/grademanagement-MyBatisProject/src/com/ssm/mapper/DepartmentMapper.xml index c76e6bd..653fbde 100644 --- a/grademanagement-MyBatisProject/src/com/ssm/mapper/DepartmentMapper.xml +++ b/grademanagement-MyBatisProject/src/com/ssm/mapper/DepartmentMapper.xml @@ -3,9 +3,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + + @@ -27,4 +29,21 @@ DELETE FROM department WHERE dept_id = #{deptId} + + + + + + + + + + + + + \ No newline at end of file diff --git a/grademanagement-MyBatisProject/src/com/ssm/mapper/MajorMapper.java b/grademanagement-MyBatisProject/src/com/ssm/mapper/MajorMapper.java index 92ef000..dca2d46 100644 --- a/grademanagement-MyBatisProject/src/com/ssm/mapper/MajorMapper.java +++ b/grademanagement-MyBatisProject/src/com/ssm/mapper/MajorMapper.java @@ -1,4 +1,5 @@ package com.ssm.mapper; +import com.ssm.entity.Department; import com.ssm.entity.Major; import java.util.List; @@ -11,4 +12,7 @@ public interface MajorMapper { void updateMajor(Major major); // 删除专业 void deleteMajor(Integer majorId); + //resultMap方式查询 + Major getMajorMapById(Integer majorId); + List getMajorMapAll(); } \ No newline at end of file diff --git a/grademanagement-MyBatisProject/src/com/ssm/mapper/MajorMapper.xml b/grademanagement-MyBatisProject/src/com/ssm/mapper/MajorMapper.xml index bf75ad4..04ec237 100644 --- a/grademanagement-MyBatisProject/src/com/ssm/mapper/MajorMapper.xml +++ b/grademanagement-MyBatisProject/src/com/ssm/mapper/MajorMapper.xml @@ -27,4 +27,20 @@ DELETE FROM major WHERE major_id = #{majorId} + + + + + + + + + + + + \ No newline at end of file diff --git a/grademanagement-MyBatisProject/src/com/ssm/mapper/NoticeMapper.java b/grademanagement-MyBatisProject/src/com/ssm/mapper/NoticeMapper.java index 74d8c01..0d7ba15 100644 --- a/grademanagement-MyBatisProject/src/com/ssm/mapper/NoticeMapper.java +++ b/grademanagement-MyBatisProject/src/com/ssm/mapper/NoticeMapper.java @@ -1,4 +1,5 @@ package com.ssm.mapper; +import com.ssm.entity.Department; import com.ssm.entity.Notice; import java.util.List; @@ -11,4 +12,7 @@ public interface NoticeMapper { void updateNotice(Notice notice); // 删除公告 void deleteNotice(Integer noticeId); + //resultMap方式查询 + Notice getNoticeMapById(Integer noticeId); + List getNoticeMapAll(); } \ No newline at end of file diff --git a/grademanagement-MyBatisProject/src/com/ssm/mapper/NoticeMapper.xml b/grademanagement-MyBatisProject/src/com/ssm/mapper/NoticeMapper.xml index 3867705..087be9b 100644 --- a/grademanagement-MyBatisProject/src/com/ssm/mapper/NoticeMapper.xml +++ b/grademanagement-MyBatisProject/src/com/ssm/mapper/NoticeMapper.xml @@ -28,4 +28,21 @@ DELETE FROM notice WHERE notice_id = #{noticeId} + + + + + + + + + + + + + \ No newline at end of file diff --git a/grademanagement-MyBatisProject/src/com/ssm/mapper/StudentMapper.java b/grademanagement-MyBatisProject/src/com/ssm/mapper/StudentMapper.java index 591d166..889f894 100644 --- a/grademanagement-MyBatisProject/src/com/ssm/mapper/StudentMapper.java +++ b/grademanagement-MyBatisProject/src/com/ssm/mapper/StudentMapper.java @@ -1,4 +1,5 @@ package com.ssm.mapper; +import com.ssm.entity.Department; import com.ssm.entity.Student; import java.util.List; @@ -11,4 +12,7 @@ public interface StudentMapper { void updateStudent(Student student); // 删除学生 void deleteStudent(Integer studentId); + //resultMap方式查询 + Student getStudentMapById(Integer studentId); + List getStudentMapAll(); } \ No newline at end of file diff --git a/grademanagement-MyBatisProject/src/com/ssm/mapper/StudentMapper.xml b/grademanagement-MyBatisProject/src/com/ssm/mapper/StudentMapper.xml index 9ad5db2..cbd52be 100644 --- a/grademanagement-MyBatisProject/src/com/ssm/mapper/StudentMapper.xml +++ b/grademanagement-MyBatisProject/src/com/ssm/mapper/StudentMapper.xml @@ -29,4 +29,22 @@ DELETE FROM student WHERE student_id = #{studentId} + + + + + + + + + + + + + + \ No newline at end of file diff --git a/grademanagement-MyBatisProject/src/com/ssm/test/TestMyBatisQueryResultMap.java b/grademanagement-MyBatisProject/src/com/ssm/test/TestMyBatisQueryResultMap.java new file mode 100644 index 0000000..9a1a204 --- /dev/null +++ b/grademanagement-MyBatisProject/src/com/ssm/test/TestMyBatisQueryResultMap.java @@ -0,0 +1,83 @@ +package com.ssm.test; + +import com.ssm.entity.Department; +import com.ssm.entity.Major; +import com.ssm.entity.Student; +import com.ssm.entity.Notice; +import com.ssm.mapper.DepartmentMapper; +import com.ssm.mapper.MajorMapper; +import com.ssm.mapper.StudentMapper; +import com.ssm.mapper.NoticeMapper; +import org.apache.ibatis.io.Resources; +import org.apache.ibatis.session.SqlSession; +import org.apache.ibatis.session.SqlSessionFactory; +import org.apache.ibatis.session.SqlSessionFactoryBuilder; + +import java.io.Reader; +import java.util.List; + +public class TestMyBatisQueryResultMap { + public static void main(String[] args) throws Exception { + // 加载配置文件 + Reader reader = Resources.getResourceAsReader("config.xml"); + SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader); + SqlSession sqlSession = factory.openSession(); + + // 四个模块 resultMap 查询测试 + testDeptResultMap(sqlSession); + testMajorResultMap(sqlSession); + testStudentResultMap(sqlSession); + testNoticeResultMap(sqlSession); + + sqlSession.close(); + reader.close(); + } + + // 院系 resultMap 查询 + private static void testDeptResultMap(SqlSession sqlSession) { + DepartmentMapper mapper = sqlSession.getMapper(DepartmentMapper.class); + Department dept = mapper.getDepartmentMapById(1); + System.out.println("===== 院系 resultMap 按ID查询 ====="); + System.out.println(dept); + + List deptList = mapper.getDepartmentMapAll(); + System.out.println("\n===== 院系 resultMap 查询所有 ====="); + deptList.forEach(System.out::println); + } + + // 专业 resultMap 查询 + private static void testMajorResultMap(SqlSession sqlSession) { + MajorMapper mapper = sqlSession.getMapper(MajorMapper.class); + Major major = mapper.getMajorMapById(1); + System.out.println("\n===== 专业 resultMap 按ID查询 ====="); + System.out.println(major); + + List majorList = mapper.getMajorMapAll(); + System.out.println("\n===== 专业 resultMap 查询所有 ====="); + majorList.forEach(System.out::println); + } + + // 学生 resultMap 查询 + private static void testStudentResultMap(SqlSession sqlSession) { + StudentMapper mapper = sqlSession.getMapper(StudentMapper.class); + Student student = mapper.getStudentMapById(1); + System.out.println("\n===== 学生 resultMap 按ID查询 ====="); + System.out.println(student); + + List studentList = mapper.getStudentMapAll(); + System.out.println("\n===== 学生 resultMap 查询所有 ====="); + studentList.forEach(System.out::println); + } + + // 公告 resultMap 查询 + private static void testNoticeResultMap(SqlSession sqlSession) { + NoticeMapper mapper = sqlSession.getMapper(NoticeMapper.class); + Notice notice = mapper.getNoticeMapById(1); + System.out.println("\n===== 公告 resultMap 按ID查询 ====="); + System.out.println(notice); + + List noticeList = mapper.getNoticeMapAll(); + System.out.println("\n===== 公告 resultMap 查询所有 ====="); + noticeList.forEach(System.out::println); + } +} \ No newline at end of file diff --git a/grademanagement-MyBatisProject/src/config.xml b/grademanagement-MyBatisProject/src/config.xml index 69dbb96..60c5a4e 100644 --- a/grademanagement-MyBatisProject/src/config.xml +++ b/grademanagement-MyBatisProject/src/config.xml @@ -3,6 +3,8 @@ PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> + + @@ -12,10 +14,10 @@ - - - - + + + + diff --git a/grademanagement-MyBatisProject/src/db.properties b/grademanagement-MyBatisProject/src/db.properties new file mode 100644 index 0000000..dee193b --- /dev/null +++ b/grademanagement-MyBatisProject/src/db.properties @@ -0,0 +1,4 @@ +driver=com.mysql.cj.jdbc.Driver +url=jdbc:mysql://localhost:3306/ssm_score_sys?serverTimezone=Asia/Shanghai&useSSL=false&allowPublicKeyRetrieval=true +user=root +password=123456 \ No newline at end of file