关于Mybatis多对一常见的三种查询方式之association关联查询

学习第二种方式其实非常简单。

先把相应的环境搭起来

这里就不再详细配置了可以参考上一篇文章,讲的非常详细

参考地址:关于Mybatis多对一常见的三种查询方式之级联属性映射

 

第二种:association

首先需要在StudentMapper接口中编写相应的方法

传入一个id,返回一个Student对象

public interface StudentMapper {

Student selectByIdAssociation(Integer id);
}

在StudentMapper.xml中配置

select id填写的是StudentMapper接口中的方法名

namespace依旧是填写接口的全限定类名

这里要注意一点是使用association 需要关联Clazz对象

<?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.mybatis.mapper.StudentMapper">
  <!--association:翻译为关联。一个Student对象关联一个Clazz对象-->
  <!--property:提供要映射的POJO类的属性名。-->
  <!--javaType:用来指定要映射的java类型。-->
  <resultMap id="studentResultMapAssociation" type="Student">
   <id property="sid" column="sid"/>
   <result property="sname" column="sname"/>
  <association property="clazz" javaType="Clazz">
   <id property="cid" column="cid"/>
   <result property="cname" column="cname"/>
   </association>
  </resultMap>
  <select id="selectByIdAssociation" resultMap="studentResultMapAssociation">
   select
   s.sid,s.sname,c.cid,c.cname
   from
   t_stu s left join t_clazz c on s.cid = c.cid
  where
   s.sid = #{sid}
  </select>
</mapper>
然后再编写测试代码
@Test
public void testSelectByIdAssociation(){
SqlSession sqlSession = SqlSessionUtil.openSession();
StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
Student student = mapper.selectByIdAssociation(1);
System.out.println(student);
sqlSession.close();
}
运行结果

 

posted @ 2023-10-13 01:22  编程菜鸟01  阅读(260)  评论(0)    收藏  举报