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

实现学生表跟地址表的一对一关系

具体项目代码:https://download.csdn.net/download/chpllp/10619240

两个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 + "]";
	}
}

Address.java

package com.java1234.model;

public class Address {
	private Integer id;
	private String sheng;
	private String shi;
	private String qu;
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getSheng() {
		return sheng;
	}
	public void setSheng(String sheng) {
		this.sheng = sheng;
	}
	public String getShi() {
		return shi;
	}
	public void setShi(String shi) {
		this.shi = shi;
	}
	public String getQu() {
		return qu;
	}
	public void setQu(String qu) {
		this.qu = qu;
	}
	@Override
	public String toString() {
		return "Address [id=" + id + ", sheng=" + sheng + ", shi=" + shi + ", qu=" + qu + "]";
	}
}

两个映射文件

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 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);
	
}

AddressMapper.java

package com.java1234.mappers;

import org.apache.ibatis.annotations.Select;

import com.java1234.model.Address;

public interface AddressMapper {
	
	@Select("select * from t_address where id=#{id}")
	public Address findById(Integer id);
	
}

StudentTest.java

package com.java1234.service;

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.StudentMapper;
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 StudentMapper studentMapper=null;
	//测试前调用
	@Before
	public void setUp() throws Exception {
		sqlSession=SqlSessionFactoryUtil.openSession();
		studentMapper=sqlSession.getMapper(StudentMapper.class);
	}
	//测试后调用
	@After
	public void tearDown() throws Exception {
		sqlSession.close();
	}
	
	@Test
	public void testSelectStudentWithAddress() {
		logger.info("查询学生(带地址)");
		Student student = studentMapper.selectStudentWithAddress(1);
		System.out.println(student.toString());
	}
}

 

你可能感兴趣的:(MyBatis)