Mybatis03_一對多查詢

Mybatis03_一對多查詢

student表結構:
在這裏插入圖片描述
student表內容:
在這裏插入圖片描述
classes表結構:
在這裏插入圖片描述
classes表內容:
在這裏插入圖片描述
Student實體:

package com.blu.entity;
import lombok.Data;

@Data
public class Student {
	private long id;
	private String name;
	private Classes classes;
}

Classes實體:

package com.blu.entity;
import java.util.List;
import lombok.Data;

@Data
public class Classes {
	private long id;
	private String name;
	private List<Student> students;
}

StudentRepository接口:

package com.blu.repository;
import com.blu.entity.Student;

public interface StudentRepository {

	public Student findById(long id);
	
}

StudentRepository.xml:

<?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="com.blu.repository.StudentRepository">
	<resultMap type="com.blu.entity.Student" id="studentMap">
		<id column="id" property="id"></id>
		<result column="name" property="name"></result>
		<association property="classes" javaType="com.blu.entity.Classes">
			<id column="cid" property="id"></id>
			<result column="cname" property="name"></result>
		</association>
	</resultMap>

	<select id="findById" parameterType="long" resultMap="studentMap">
		select s.id, s.name, c.id as cid,c.name as cname
		from student s, classes c
		where s.id=#{id} and s.cid=c.id
	</select>
</mapper>

resultMap標籤寫法:

type標籤指定返回值類型,相當於resultType
子標籤id用於標識主鍵,result標識其他字段
子子標籤column標識查詢結果集中的字段,property用於標識實體類中的屬性

註冊Mapper

<mapper resource="com/blu/mapper/StudentRepository.xml"></mapper>

測試方法:

public class Test {
	public static void main(String[] args) {
		InputStream inputStream = Test.class.getClassLoader().getResourceAsStream("config.xml");
		SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
		SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);
		SqlSession sqlSession = sqlSessionFactory.openSession();
		StudentRepository StudentRepository = sqlSession.getMapper(StudentRepository.class);
		Student student = StudentRepository.findById(1L);
		System.out.println(student);
		sqlSession.close();
	}
}

運行結果:

Student(id=1, name=張三, classes=Classes(id=2, name=2班, students=null))
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章