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