main
吕淼 2 weeks ago
parent c59decf6af
commit 80581c2ff3

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
<data-source source="LOCAL" name="@localhost" uuid="c43832b1-ab66-4107-a9d6-04b8389eea6f">
<driver-ref>mysql.8</driver-ref>
<synchronize>true</synchronize>
<jdbc-driver>com.mysql.cj.jdbc.Driver</jdbc-driver>
<jdbc-url>jdbc:mysql://localhost:3306</jdbc-url>
<working-dir>$ProjectFileDir$</working-dir>
</data-source>
</component>
</project>

@ -7,5 +7,6 @@
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="lib" level="project" />
</component>
</module>

@ -0,0 +1,50 @@
package com.ssm.entity;
public class Course {
private Integer courseId; // 课程ID
private String courseName; // 课程名称
private Integer credit; // 学分与数据库int类型匹配
private String teacher; // 教师
public Integer getCourseId() {
return courseId;
}
public void setCourseId(Integer courseId) {
this.courseId = courseId;
}
public String getCourseName() {
return courseName;
}
public void setCourseName(String courseName) {
this.courseName = courseName;
}
public Integer getCredit() {
return credit;
}
public void setCredit(Integer credit) {
this.credit = credit;
}
public String getTeacher() {
return teacher;
}
public void setTeacher(String teacher) {
this.teacher = teacher;
}
@Override
public String toString() {
return "Course{" +
"courseId=" + courseId +
", courseName='" + courseName + '\'' +
", credit=" + credit +
", teacher='" + teacher + '\'' +
'}';
}
}

@ -0,0 +1,10 @@
package com.ssm.mapper;
import com.ssm.entity.Course;
import java.util.List;
public interface CourseMapper {
Course getCourseById(Integer courseId);
List<Course> getAllCourses();
}

@ -0,0 +1,19 @@
<?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.ssm.mapper.CourseMapper">
<!-- 根据ID查询课程 -->
<select id="getCourseById" resultType="com.ssm.entity.Course">
SELECT courseId, coursename, credit, teacher
FROM course
WHERE courseId = #{courseId}
</select>
<!-- 查询所有课程 -->
<select id="getAllCourses" resultType="com.ssm.entity.Course">
SELECT courseId, coursename, credit, teacher
FROM course
ORDER BY courseId
</select>
</mapper>

@ -0,0 +1,44 @@
package com.ssm.test;
import com.ssm.entity.Course;
import com.ssm.mapper.CourseMapper;
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.InputStream;
import java.util.List;
public class TestMyBatis {
public static void main(String[] args) {
try {
// 使用正确的配置文件名 config.xml
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("config.xml"));
SqlSession sqlSession = sqlSessionFactory.openSession(true);
System.out.println("✅ MyBatis 连接成功!");
// 使用正确的变量名 sqlSession
CourseMapper courseMapper = sqlSession.getMapper(CourseMapper.class);
// 测试查询单个课程
System.out.println("\n=== 成员吕淼 查询课程ID=1 ===");
Course course = courseMapper.getCourseById(1);
System.out.println(course);
// 测试查询所有课程
System.out.println("\n=== 所有课程列表 ===");
List<Course> courses = courseMapper.getAllCourses();
for (Course c : courses) {
System.out.println(c);
}
sqlSession.close();
System.out.println("\n✅ 测试完成!");
} catch (Exception e) {
System.err.println("❌ 测试失败:");
e.printStackTrace();
}
}
}

@ -4,5 +4,23 @@
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<!-- mybatis全局配置文件 -->
<configuration>
<!-- 配置环境 -->
<environments default="development">
<environment id="development">
<!-- 使用JDBC事务管理 -->
<transactionManager type="JDBC"/>
<!-- 数据库连接池 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/ssm?serverTimezone=Asia/Shanghai&amp;useSSL=false&amp;allowPublicKeyRetrieval=true"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<!-- 配置Mapper映射文件 -->
<mappers>
<mapper resource="com/ssm/mapper/CourseMapper.xml"/>
</mappers>
</configuration>

@ -1,9 +1,7 @@
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for demo
-- ----------------------------
@ -25,3 +23,23 @@ INSERT INTO `demo` VALUES (23, '4', '444');
INSERT INTO `demo` VALUES (24, '5', '555');
INSERT INTO `demo` VALUES (25, '6', '666');
INSERT INTO `demo` VALUES (26, '7', '777');
-- ----------------------------
-- Table structure for course
-- ----------------------------
DROP TABLE IF EXISTS `course`;
CREATE TABLE `course` (
`courseId` int(11) NOT NULL AUTO_INCREMENT,
`coursename` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`credit` int(11) NULL DEFAULT NULL,
`teacher` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`courseId`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
-- ----------------------------
-- Records of course
-- ----------------------------
INSERT INTO `course` VALUES (1, '英语', 0, '张华');
INSERT INTO `course` VALUES (2, 'C语言', 1, '李磊');
SET FOREIGN_KEY_CHECKS = 1;

@ -18,8 +18,9 @@
</context:component-scan>
<!-- 2.引入db.properties
注意:①方式二:<bean id="" class="PropertyPlaceholderConfigurer"> -->
<context:property-placeholder location="classpath:db.properties"/>
注意:①方式二:<bean id="" class="PropertyPlaceholderConfigurer">
②如果多个properties文件可以使用location属性配置多个 -->
<context:property-placeholder location="classpath:db.properties" ignore-unresolvable="true"/>
<!-- 3.引入数据库的数据源配置:
注意①还可以配置事务控制、AOP等
@ -31,11 +32,19 @@
<property name="password" value="${password}"></property>
</bean> -->
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
<!-- 这里报错说明类中不存在这个属性需要改成规定的属性名 -->
<!-- 这里报错说明类中不存在这个属性,需要改成规定的属性名 -->
<property name="driverClassName" value="${driver}"></property>
<property name="url" value="${url}"></property>
<property name="username" value="${user}"></property>
<property name="password" value="${password}"></property>
<!-- 连接池配置 -->
<property name="initialSize" value="5"></property>
<property name="maxTotal" value="20"></property>
<property name="maxIdle" value="10"></property>
<property name="minIdle" value="5"></property>
<property name="maxWaitMillis" value="60000"></property>
<property name="validationQuery" value="SELECT 1"></property>
<property name="testOnBorrow" value="true"></property>
</bean>
<!-- 事务管理器DataSourceTransactionManager该类在spring-jdbc包中指定这个事务管理器管理配置的dataSource数据源 -->
@ -53,7 +62,7 @@
即接口类的对象,然后才能操作具体增删改查操作。
(2)Spring声明式事务非常强大想让Spring管理事务。
注意①SqlSessionFactoryBean类能创建出SqlSessionFactory对象意味着容器一启动让容器帮我们创建SqlSessionFactory-->
<bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 访问数据库必然需要数据源,管理数据库的连接,提高数据库性能,在数据源中配置使用的连接池 -->
<property name="dataSource" ref="dataSource"></property>
<!-- 加载MyBatis全局配置文件config.xml如果config.xml中没有东西可以删掉
@ -62,6 +71,8 @@
<!-- 指定SQL映射文件的位置当SQL映射文件和接口名不一致时使用该方法指定。
(不讲)?如果名字一致,则可以使用<mybatis:scan base-package=""/>扫描所有mapper SQL映射文件(报错mybatis前缀未绑定)? -->
<property name="mapperLocations" value="classpath:com/ssm/mapper/*.xml"></property>
<!-- 配置类型别名包让MyBatis能够识别实体类 -->
<property name="typeAliasesPackage" value="com.ssm.entity"></property>
<!-- 此处还可以配置别名处理器等,这些以前都是在全局配置文件中定义的现在都变成sqlSessionFactoryBean的一个属性,
相当于mybatis全局配置文件中的内容都拿到Spring配置文件来配置。 -->
</bean>

@ -1,4 +1,4 @@
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/ssm_farm?serverTimezone=Asia/Shanghai
url=jdbc:mysql://localhost:3306/ssm?serverTimezone=Asia/Shanghai
user=root
password=root
Loading…
Cancel
Save