School.java
package cn.edu.scnu.association.ann.entity;
import java.util.List;
public class School {
private Integer id;
private String sch_name;
private List<Student> students;
public List<Student> getStudents() {
return students;
}
public void setStudents(List<Student> students) {
this.students = students;
}
@Override
public String toString() {
return "School{" +
"id=" + id +
", sch_name='" + sch_name + '\'' +
", students=" + students +
'}';
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getSch_name() {
return sch_name;
}
public void setSch_name(String sch_name) {
this.sch_name = sch_name;
}
}
Student.java
package cn.edu.scnu.association.ann.entity;
public class Student {
private Integer id;
private String name;
private Integer age;
private School school;
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;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
", school=" + school +
'}';
}
}
StudentMapper.java
package cn.edu.scnu.association.ann.dao;
import cn.edu.scnu.association.ann.entity.School;
import cn.edu.scnu.association.ann.entity.Student;
import org.apache.ibatis.annotations.*;
import org.apache.ibatis.mapping.FetchType;
import java.util.List;
public interface StudentMapper {
/**
* 增加数据
* 删除数据
* 修改数据
* 查询数据
*/
@Insert("insert into student(id,name,age,sch_id) values(#{id},#{name},#{age},(select school.id from school where school.name like '中山大学'))")
public int insertStudent(Student student);
@Delete("delete from student where id = #{id}")
public int deleteStudent(Integer id);
@Update("update student set name=#{name},age=#{age},sch_id=(select school.id from school where school.name like '华南理工大学') where id=#{id}")
public int updateStudent(Student student);
// 按学生id查询学生详细信息
/*
下面的属性可以因为名字相同,所以可以自动映射
@Result(property = "id",column = "id"),
@Result(property = "name",column = "name"),
@Result(property = "age",column = "age"),
*/
@Results(
value = {
@Result(property = "id", column = "id"),
@Result(property = "name", column = "name"),
@Result(property = "age", column = "age"),
@Result(property = "school.id", column = "sch_id"),
@Result(property = "school.sch_name", column = "sch_name")
}
)
@Select("select student.*,school.name as sch_name from student,school where student.sch_id=school.id")
public List<Student> getStudentDetail();
@Results(
value = {
@Result(property = "id", column = "id"),
@Result(property = "name", column = "name"),
@Result(property = "age", column = "age"),
@Result(property = "school",column = "sch_id", //sch_id作为参数传入select方法中
one = @One(
select = "cn.edu.scnu.association.ann.dao.StudentMapper.getSchool",
fetchType = FetchType.EAGER
)
)
}
)
@Select("select student.*,school.name as sch_name from student,school where student.sch_id=school.id")
public List<Student> getStudents();
@Select("select school.id,school.name as sch_name from school where id=#{id}")
public School getSchool(Integer id);
//根据学校查询所有学生
@Results(
value = {
@Result(column = "sch_id",property = "id"),
@Result(column = "sch_name",property = "sch_name"),
@Result(column = "sch_id",property = "students",
many = @Many(
select = "cn.edu.scnu.association.ann.dao.StudentMapper.getStudentBySch_Id",
fetchType = FetchType.LAZY
)
)
}
)
@Select("select school.id as sch_id,school.name as sch_name,student.* from student,school where school.id=#{id}")
public List<School> getSchoolDetail(Integer id);
@Select("select * from student where sch_id=#{id}")
public List<Student> getStudentBySch_Id(Integer id);
}
Test.java
package cn.edu.scnu;
import cn.edu.scnu.association.ann.dao.StudentMapper;
import cn.edu.scnu.association.ann.entity.School;
import cn.edu.scnu.association.ann.entity.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 org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class Test3 {
private SqlSessionFactory sqlSessionFactory;
private SqlSession sqlSession;
@Before
public void init(){
String resource = "mybatis-config.xml";
try{
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
sqlSession = sqlSessionFactory.openSession();
} catch (IOException e) {
e.printStackTrace();
}
}
@After
public void destroy(){
sqlSession.commit();
sqlSession.close();
}
@Test
public void insertStu(){
StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);
for (int i = 6; i < 10; i++) {
Student student = new Student();
student.setId(i);
student.setName("mike");
student.setAge(23);
studentMapper.insertStudent(student);
}
}
@Test
public void delStu(){
StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);
studentMapper.deleteStudent(1);
}
@Test
public void updateStu(){
StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);
Student student = new Student();
student.setId(6);
student.setName("虚竹");
student.setAge(23);
studentMapper.updateStudent(student);
}
@Test
public void getStuDetail(){
StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);
List<Student> students = studentMapper.getStudentDetail();
for (Student s :
students) {
System.out.println(s.toString());
}
}
@Test
public void getStudents(){
StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);
List<Student> students = studentMapper.getStudents();
for (Student s :
students) {
System.out.println(s.toString());
}
}
@Test
public void getSchool(){
StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);
School school = studentMapper.getSchool(3);
System.out.println(school.toString());
}
@Test
public void getSchoolDetail(){
StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);
List<School> school = studentMapper.getSchoolDetail(3);
for (School s :
school) {
System.out.println(s.toString());
}
}
}