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指定容器类型

  • 相关阅读:
    linux十九压缩解压
    linux第十八dd命令
    【51单片机】数据类型
    【博客园】
    【C++】简介与环境的搭建
    【树莓派】安装TeamViewer
    【树莓派】Makefile的编写
    【cJSON库】cJSON库的使用
    【树莓派】忘记系统用户密码,如何重置密码
    【树莓派】树莓派与PC机通信
  • 原文地址:https://www.cnblogs.com/huaobin/p/14162739.html
Copyright © 2011-2022 走看看