MyBatis注解配置映射器:一对多关系的实现

实现班级表跟学生表的一对多关系

具体项目代码: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);
		}
	}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值