mybatis——多对一、一对一(五)

(一)一对一

<!--一对一-->
<select id="queryStudentById" parameterType="int" resultMap="studentMap">
  select s.*,c.* from student s inner join card c on s.stu_card=c.card_id where s.stu_id=#{stu_id}
</select>
<resultMap id="studentMap" type="Student">
    <id property="stu_id" column="stu_id" />
    <result property="stu_name" column="stu_name" />
    <!--association适用于一对一 JavaType指定该属性的类型-->
    <association property="card" column="card_id" javaType="com.xiaonuo.domain.Card">
        <id property="card_id" column="card_id" />
        <result property="card_val" column="card_val" />
    </association>
</resultMap>

测试方法:

StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
Student student = mapper.queryStudentById(1);
System.out.println(student);

(二)多对一

<mapper namespace="com.xiaonuo.Interface.ClassMapper">
    <select id="queryClassStudents" resultMap="queryStudentByClassMapper" parameterType="int">
       select class.*,student.*,card.* from card card inner join student student on student.stu_card = card.card_id inner join class class on class.class_id = student.class_id where class.class_id = #{value};
    </select>
    <resultMap id="queryStudentByClassMapper" type="Class">
        <id property="class_id" column="class_id" />
        <result property="class_name" column="class_name"/>
        <!--属性类型JavaType 如果返回的是一个集合那么就是属性的元素类型 ofType collection使用一对多-->
        <collection property="studentList" ofType="Student">
            <id property="stu_id" column="stu_id" />
            <result property="stu_name" column="stu_name" />
            <!--association适用于一对一 JavaType指定该属性的类型-->
            <association property="card" column="card_id" javaType="com.xiaonuo.domain.Card">
                <id property="card_id" column="card_id" />
                <result property="card_val" column="card_val" />
            </association>
        </collection>
    </resultMap>

</mapper>

测试方法:

ClassMapper mapper = sqlSession.getMapper(ClassMapper.class);
Class aClass = mapper.queryClassStudents(1);
System.out.println(aClass);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值