实现班级表跟学生表的一对多关系
具体项目代码:https://download.csdn.net/download/chpllp/10619679
两个entity:
Student.java
package com.java1234.model;
public class Student {
private Integer id;
private String name;
private Integer age;
private Address address;
public Student() {
super();
// TODO Auto-generated constructor stub
}
public Student(String name, Integer age) {
super();
this.name = name;
this.age = age;
}
public Student(Integer id, String name, Integer age) {
super();
this.id = id;
this.name = name;
this.age = age;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", age=" + age + ", address=" + address + ", grade=" + grade
+ "]";
}
}
Grade.java
package com.java1234.model;
import java.util.List;
public class Grade {
private Integer id;
private String gradeName;
private List<Student> students;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getGrade() {
return gradeName;
}
public void setGrade(String grade) {
this.gradeName = grade;
}
public List<Student> getStudents() {
return students;
}
public void setStudents(List<Student> students) {
this.students = students;
}
@Override
public String toString() {
return "Grade [id=" + id + ", gradeName=" + gradeName + "]";
}
}
两个映射文件
StudentMapper.java
package com.java1234.mappers;
import java.util.List;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import org.apache.ibatis.annotations.One;
import com.java1234.model.Student;
public interface StudentMapper {
@Insert("insert into t_student values(null, #{name}, #{age})")
public int insertStudent(Student student);
@Update("update t_student set name = #{name}, age = #{age} where id = #{id}")
public int updateStudent(Student student);
@Delete("delete from t_student where id = #{id}")
public int deleteStudent(int id);
@Select("select * from t_student where id = #{id}")
public Student getStudentById(Integer id);
@Select("select * from t_student")
@Results(
{
@Result(id=true,column="id",property="id"),
@Result(column="name",property="name"),
@Result(column="age",property="age")
}
)
public List<Student> findStudents();
@Select("select * from t_student where id=#{id}")
@Results(
{
@Result(id=true,column="id",property="id"),
@Result(column="name",property="name"),
@Result(column="age",property="age"),
@Result(column="addressId", property="address", one=@One(select="com.java1234.mappers.AddressMapper.findById"))
}
)
public Student selectStudentWithAddress(int id);
@Select("select * from t_student where gradeId=#{gradeId}")
@Results(
{
@Result(id=true,column="id",property="id"),
@Result(column="name",property="name"),
@Result(column="age",property="age"),
@Result(column="addressId", property="address", one=@One(select="com.java1234.mappers.AddressMapper.findById"))
}
)
public Student selectStudentByGradeId(int gradeId);
}
GradeMapper.java
package com.java1234.mappers;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Many;
import com.java1234.model.Grade;
public interface GradeMapper {
@Select("select * from t_grade where id={#id}")
@Results(
{
@Result(id=true,column="id", property="id"),
@Result(column="gradeName", property="gradeName"),
@Result(column="id", property="students", many=@Many(select="com.java1234.mappers.StudentMapper.selectStudentByGradeId"))
}
)
public Grade findById(Integer id);
}
StudentTest.java
package com.java1234.service;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.apache.log4j.Logger;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.java1234.mappers.GradeMapper;
import com.java1234.mappers.StudentMapper;
import com.java1234.model.Grade;
import com.java1234.model.Student;
import com.java1234.util.SqlSessionFactoryUtil;
public class StudentTest {
private static Logger logger=Logger.getLogger(StudentTest.class);
private SqlSession sqlSession=null;
private GradeMapper gradeMapper=null;
//测试前调用
@Before
public void setUp() throws Exception {
sqlSession=SqlSessionFactoryUtil.openSession();
sqlSession.getMapper(StudentMapper.class);
gradeMapper = sqlSession.getMapper(GradeMapper.class);
}
//测试后调用
@After
public void tearDown() throws Exception {
sqlSession.close();
}
@Test
public void testSelectGradeWithStudents() {
logger.info("查询年级(带学生)");
Grade grade = gradeMapper.findById(1);
System.out.println(grade.toString());
List<Student> studentList = grade.getStudents();
for(Student student : studentList) {
System.out.println(student);
}
}
}