🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
查询一个 student 并查询一个 address。 <br/> 步骤如下: **1. 在 Student 中放一个 Address** ```java @Data @NoArgsConstructor @AllArgsConstructor public class Address { private Integer id; private String studentId; private String address; } @Data @NoArgsConstructor @AllArgsConstructor public class Student { private Integer id; private String name; private Date born; private String gender; /** 在 Student 中放一个 Address 成员变量 */ private Address address; } ``` **2. DAO 层接口** ```java public interface StudentDao { Student queryByStudentId(@Param("id") Integer id); } ``` **3. XML 映射文件** 共有两种写法:一种是嵌套结果查询,一种是嵌套查询。 (1)嵌套结果查询。 多张表同时查询,所以只查询一次就可以,效率要高于嵌套查询。 ```xml <!-- resultMap: 对应id="studentMap" 的 resultMap 标签 --> <select id="queryByStudentId" resultMap="studentMap" parameterType="integer"> select s.id as student_id,s.name,s.born,s.gender, a.id as address_id,a.address from student s inner join address a on s.id=a.student_id where s.id=#{id} </select> <!-- id: 当前 resultMap 标签的唯一标识,名称自定义 type: queryByStudentId方法的返回值类型 --> <resultMap id="studentMap" type="student"> <!-- Student的映射部分 --> <id property="id" column="student_id" /> <result property="name" column="name" /> <result property="born" column="born" /> <result property="gender" column="gender" /> <!-- Address的映射部分 property: 对应 Student.address 变量名 javaType: 对应 Student.address 变量类型 --> <association property="address" javaType="Address"> <!-- property: Address实体类中的成员变量名 --> <id property="id" column="address_id" /> <result property="studentId" column="student_id" /> <result property="address" column="address" /> </association> </resultMap> ``` >[warning]注意:resultMap 标签中当映射多个实体类时,`<id column="col_name"/>`中的 col_name 是最好不要相同。 **4. 测试** ```java @Test public void queryByStudentId() { try { sqlSession = MybatisUtils.createConnetion(); Student student = sqlSession.getMapper(StudentDao.class).queryByStudentId(5); System.out.println(student); } catch (Exception e) { e.printStackTrace(); } finally { MybatisUtils.close(sqlSession); } } ``` ![](https://img.kancloud.cn/11/27/11276bbf9cc0bbb1f254d6f3a3ae5744_1482x226.png)