zoukankan      html  css  js  c++  java
  • 一对多映射

    需求:根据用户编号查询用户信息以及用户所有订单信息

    sql语句为:

    select u.*,o.*,o.id oid from kuser u join orders o on o.user_id = u.id where u.id = 1;

    UserMapper.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.kkb.mapper.UserMapper"> <!--自定义映射--> <resultMap id="user_resultMap" type="user" autoMapping="true"> <result column="username" property="name"/> <collection property="orders" ofType="order" autoMapping="true"> <result column="oid" property="id"/> </collection> </resultMap> <select id="selectUserByID" parameterType="int" resultMap="user_resultMap"> select u.*,o.*,o.id oid from kuser u left join orders o on o.user_id = u.id where u.id = #{uid} </select> </mapper>

    autoMapping="true" 将自动映射字段名与属性名能对应的字段,我们只需要添加对应不上的即可

    测试代码:

    @Test public void test2(){ SqlSession session = factory.openSession(); UserMapper mapper = session.getMapper(UserMapper.class); User user = mapper.selectUserByID(1); System.out.println(user); session.close(); }

    注意:在处理一对多时无论如何在resultMap标签中必须至少存在一个手动映射字段否则,将不会合并重复的主记录(user) 按照官方的说法,建议将手动映射id字段,可提高整体性能:去看看

    另外collection标签中 ofType用于指定元素的类型 javaType指定容器类型

  • 相关阅读:
    Spring 控制器层如何调用DAO层
    Spring 工程分层
    spring boot工程如何启用 热启动功能
    Spring 视图层如何显示验证消息提示
    Sping POJO中如何添加验证规则和验证消息提示
    Spirng 分层,增加数据访问对象层
    Spring A 标签链接使用
    Spring 控制器重定向
    课程详情页之后台
    课程详情页之前台
  • 原文地址:https://www.cnblogs.com/huaobin/p/14162739.html
Copyright © 2011-2022 走看看