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

  • 相关阅读:
    vue-Prop
    C#四舍五入的方法
    设计模式-建造者模式
    vue-解决Vue打包上线之后部分CSS不生效的问题
    vue项目兼容IE浏览器
    html-box-sizing
    MSSQLSERVER执行计划详解
    white-space和word-wrap和word-break所表示的换行和不换行的区别
    JS设置cookie、读取cookie、删除cookie
    windows7 telnet服务开启和登录授权
  • 原文地址:https://www.cnblogs.com/huaobin/p/14162739.html
Copyright © 2011-2022 走看看