班级表,学生表,一个班级有多个学生,对于学生来说就是多对一的关系
实体类
学生
package model;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
@Getter
@Setter
@ToString
public class Student {
private Integer id;
private String name;
private String sex;
private Integer classId;
//多加一个班级字段,表示每个学生关联一个班级
private Classes classes;
}
班级
package model;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import java.sql.Timestamp;
@Getter
@Setter
@ToString
public class Classes {
private Integer id;
private String name;
private Timestamp greadeYear;
}
接口层
学生
package Dao;
import model.Student;
import java.util.List;
public interface StudentDao {
List<Student> selectStudentTeacher();
}
映射文件
<?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="Dao.StudentDao">
<select id="selectStudentTeacher" resultMap="studentTeacher">
select * from class c join student s on c.id=s.classId
</select>
<resultMap id="studentTeacher" type="model.Student">
<id column="id" property="id"/>
<result column="name" property="name"/>
<result column="sex" property="sex"/>
<result column="classId" property="classId"/>
<association property="classes" javaType="model.Classes">
<id property="id" column="id"/>
<result property="name" column="name"/>
<result property="greadeYear" column="greadeYear"/>
</association>
</resultMap>
</mapper>
mybatis-config.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>
<environments default="mysql">
<environment id="mysql">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/course?characterEncoding=utf8"/>
<property name="username" value="root"/>
<property name="password" value=""/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="Dao/StudentDao.xml"/>
</mappers>
</configuration>
测试
import Dao.StudentDao;
import model.Student;
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.IOException;
import java.io.InputStream;
import java.util.List;
public class TestMybatis {
public static void main(String[] args) throws IOException {
InputStream inputStream= Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session=factory.openSession();
StudentDao studentDao=session.getMapper(StudentDao.class);
List<Student> students=studentDao.selectStudentTeacher();
for(Student student:students){
System.out.println(student);
}
}
}
结果
Student(id=1, name=计算机, sex=男, classId=1, classes=Classes(id=1, name=计算机, greadeYear=2020-07-30 09:00:06.0))
Student(id=2, name=英语, sex=男, classId=2, classes=Classes(id=2, name=英语, greadeYear=2020-07-30 09:00:06.0))
Student(id=3, name=数学, sex=男, classId=3, classes=Classes(id=3, name=数学, greadeYear=2020-07-30 09:00:06.0))