feat(database): 配置数据库连接外部化并实现resultMap查询功能

- 将数据库连接信息从config.xml移至db.properties配置文件
- 在config.xml中添加properties资源引用实现配置外部化
- 为Department、Major、Student、Notice四个模块添加resultMap查询方法
- 创建TestMyBatisQueryResultMap测试类验证resultMap查询功能
- 更新SQL映射文件添加resultMap定义和相关查询语句
- 实现基于resultMap的按ID查询和查询所有数据功能
main
CesarH 2 days ago
parent e3fd2600e6
commit 8d65f1b081

@ -13,4 +13,7 @@ public interface DepartmentMapper {
void updateDepartment(Department department);
// 删除院系
void deleteDepartment(Integer deptId);
//resultMap方式查询
Department getDepartmentMapById(Integer deptId);
List<Department> getDepartmentMapAll();
}

@ -3,9 +3,11 @@
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ssm.mapper.DepartmentMapper">
<!-- 按ID查询-->
<select id="getDepartmentById" resultType="com.ssm.entity.Department" parameterType="Integer">
SELECT * FROM department WHERE dept_id = #{deptId}
</select>
<!-- 查询所有 -->
<select id="getDepartmentAll" resultType="com.ssm.entity.Department">
SELECT * FROM department
</select>
@ -27,4 +29,21 @@
<delete id="deleteDepartment" parameterType="Integer">
DELETE FROM department WHERE dept_id = #{deptId}
</delete>
<!--resultMap映射-->
<resultMap id="DepartentResult" type="com.ssm.entity.Department">
<id property="deptId" column="dept_id"/>
<result property="deptName" column="dept_name"/>
<result property="deptCode" column="dept_code"/>
<result property="deptPhone" column="dept_phone"/>
<result property="deptAddress" column="dept_address"/>
</resultMap>
<!-- 按ID查询使用resultMap -->
<select id="getDepartmentMapById" resultMap="DepartentResult" parameterType="Integer">
SELECT * FROM department WHERE dept_id = #{deptId}
</select>
<!-- 查询所有使用resultMap -->
<select id="getDepartmentMapAll" resultMap="DepartentResult" >
SELECT * FROM department
</select>
</mapper>

@ -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<Major> getMajorMapAll();
}

@ -27,4 +27,20 @@
<delete id="deleteMajor" parameterType="Integer">
DELETE FROM major WHERE major_id = #{majorId}
</delete>
<!-- resultMap映射 -->
<resultMap type="com.ssm.entity.Major" id="MajorResult">
<id property="majorId" column="major_id"/>
<result property="majorName" column="major_name"/>
<result property="majorCode" column="major_code"/>
<result property="deptId" column="dept_id"/>
<result property="studyYear" column="study_year"/>
</resultMap>
<!-- 按ID查询使用resultMap -->
<select id="getMajorMapById" resultMap="MajorResult" parameterType="Integer">
SELECT * FROM major WHERE major_id = #{majorId}
</select>
<!-- 查询所有使用resultMap -->
<select id="getMajorMapAll" resultMap="MajorResult">
SELECT * FROM major
</select>
</mapper>

@ -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<Notice> getNoticeMapAll();
}

@ -28,4 +28,21 @@
<delete id="deleteNotice" parameterType="Integer">
DELETE FROM notice WHERE notice_id = #{noticeId}
</delete>
<!-- resultMap映射 -->
<resultMap type="com.ssm.entity.Notice" id="NoticeResult">
<id property="noticeId" column="notice_id"/>
<result property="title" column="title"/>
<result property="content" column="content"/>
<result property="publishTime" column="publish_time"/>
<result property="publisher" column="publisher"/>
<result property="status" column="status"/>
</resultMap>
<!-- 按ID查询使用resultMap -->
<select id="getNoticeMapById" resultMap="NoticeResult" parameterType="Integer">
SELECT * FROM notice WHERE notice_id = #{noticeId}
</select>
<!-- 查询所有使用resultMap -->
<select id="getNoticeMapAll" resultMap="NoticeResult">
SELECT * FROM notice
</select>
</mapper>

@ -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<Student> getStudentMapAll();
}

@ -29,4 +29,22 @@
<delete id="deleteStudent" parameterType="Integer">
DELETE FROM student WHERE student_id = #{studentId}
</delete>
<!-- resultMap映射 -->
<resultMap type="com.ssm.entity.Student" id="StudentResult">
<id property="studentId" column="student_id"/>
<result property="studentNo" column="student_no"/>
<result property="studentName" column="student_name"/>
<result property="gender" column="gender"/>
<result property="age" column="age"/>
<result property="classId" column="class_id"/>
<result property="phone" column="phone"/>
</resultMap>
<!-- 按ID查询使用resultMap -->
<select id="getStudentMapById" resultMap="StudentResult" parameterType="Integer">
SELECT * FROM student WHERE student_id = #{studentId}
</select>
<!-- 查询所有使用resultMap -->
<select id="getStudentMapAll" resultMap="StudentResult">
SELECT * FROM student
</select>
</mapper>

@ -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<Department> 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<Major> 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<Student> 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<Notice> noticeList = mapper.getNoticeMapAll();
System.out.println("\n===== 公告 resultMap 查询所有 =====");
noticeList.forEach(System.out::println);
}
}

@ -3,6 +3,8 @@
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--加载db.properties配置文件 -->
<properties resource="db.properties"/>
<!-- 开启驼峰命名映射 -->
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
@ -12,10 +14,10 @@
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/ssm_score_sys?serverTimezone=Asia/Shanghai&amp;characterEncoding=utf8&amp;useSSL=false"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${user}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>

@ -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
Loading…
Cancel
Save