关于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();
}
运行结果


浙公网安备 33010602011771号