根据文档中要求,编写代码
时间: 2024-09-21 22:12:26 浏览: 41
根据提供的实验指导书的要求,以下是针对`stu`表的部分关键代码示例:
### 1. `StudentDBUtil.java` 实现会话对象构建
```java
package com.ex02.student.utils;
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;
public class StudentDBUtil {
private static SqlSessionFactory sqlSessionFactory = null;
static {
try {
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
} catch (Exception e) {
e.printStackTrace();
}
}
public static SqlSession getSession() {
return sqlSessionFactory.openSession();
}
}
```
### 2. `Student.java` 定义Java Bean
```java
package com.ex02.student.po;
public class Student {
private String sno;
private String sname;
private String ssex;
private String snative;
private int mno;
// Getters and setters are omitted here but should be included in your actual implementation.
@Override
public String toString() {
return "Student{" +
"sno='" + sno + '\'' +
", sname='" + sname + '\'' +
", ssex='" + ssex + '\'' +
", snative='" + snative + '\'' +
", mno=" + mno +
'}';
}
}
```
### 3. 配置文件 `mybatis-config.xml`
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<properties resource="db.properties"/>
<environments default="mysql_student">
<environment id="mysql_student">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${mysql.driver}"/>
<property name="url" value="${mysql.url}"/>
<property name="username" value="${mysql.username}"/>
<property name="password" value="${mysql.password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mapper/StudentMapper.xml"/>
</mappers>
</configuration>
```
### 4. 映射文件 `StudentMapper.xml`
```xml
<?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.ex02.student.po.Student">
<select id="selectStudentBySno" parameterType="String" resultType="com.ex02.student.po.Student">
SELECT * FROM stu WHERE sno=#{sno};
</select>
<select id="selectStudentBySname" parameterType="String" resultType="com.ex02.student.po.Student">
SELECT * FROM stu WHERE sname LIKE CONCAT('%', #{sname}, '%');
</select>
<insert id="insertStudent" parameterType="com.ex02.student.po.Student">
INSERT INTO stu(sno, sname, ssex, snative, mno)
VALUES(#{sno}, #{sname}, #{ssex}, #{snative}, #{mno});
</insert>
<delete id="deleteStudent" parameterType="String">
DELETE FROM stu WHERE sno=#{sno}
</delete>
<update id="updateStudent" parameterType="com.ex02.student.po.Student">
UPDATE stu SET sname=#{sname}, ssex=#{ssex}, snative=#{snative}, mno=#{mno} WHERE sno=#{sno}
</update>
</mapper>
```
### 5. 测试类 `StudentTest.java`
```java
package com.ex02.student;
import com.ex02.student.po.Student;
import com.ex02.student.utils.StudentDBUtil;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
public class StudentTest {
@Test
public void studentTest(){
SqlSession sqlSession = StudentDBUtil.getSession();
// Example of a test case using the mapper
StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);
// Query by Sno
Student student = studentMapper.selectStudentBySno("100000001");
System.out.println(student);
sqlSession.close();
}
}
```
### 6. `StudentMapper.java` 接口
```java
package com.ex02.student.mapper;
import com.ex02.student.po.Student;
public interface StudentMapper {
Student selectStudentBySno(String sno);
// Add other methods as needed based on the provided XML mappings.
}
```
这些是针对`stu`表的一些基础实现。同样的模式可以应用于其他三个表格(`course`, `teacher`, `sc`)。你需要为每个表创建类似的类和接口,并且调整SQL语句以匹配对应的表结构。
阅读全文