zoukankan      html  css  js  c++  java
  • Mybatis进阶学习笔记——关系查询——一对多查询

    一个客户拥有多个订单

     1     <resultMap type="User" id="UserOrderResultMap">
     2         <id column="id" property="id"/>
     3         <result column="name" property="name"/>
     4         
     5         <!-- 如何体现出User中封装的订单呢?需要用到collection标签 -->
     6         <!-- 
     7             collection:需要封装的集合
     8             property:关联属性的名字
     9          -->
    10         <!-- <collection property="orders" javaType="Order"> -->
    11         <!-- opType使用alt+/会自动提示 -->
    12         <collection property="orders" ofType="Order">
    13             <id column="order_id" property="id"/>
    14             <result column="orderno" property="orderno"/>
    15             <result column="productname" property="productname"/>
    16         </collection>
    17         
    18     </resultMap>
    19     
    20     <select id="queryUserOrder" resultMap="UserOrderResultMap">
    21         SELECT u.id,u.name,o.orderno,o.id order_id,o.productname FROM t_user u LEFT JOIN t_order o ON o.user_id=u.id
    22     </select>

    User.java:

     1 package cn.sm1234.domain;
     2 
     3 import java.util.ArrayList;
     4 import java.util.List;
     5 
     6 public class User {
     7 
     8     private Integer id;
     9     private String name;
    10     private String password;
    11     
    12     private List<Order> orders = new ArrayList<Order>();
    13     
    14     public Integer getId() {
    15         return id;
    16     }
    17     public void setId(Integer id) {
    18         this.id = id;
    19     }
    20     public String getName() {
    21         return name;
    22     }
    23     public void setName(String name) {
    24         this.name = name;
    25     }
    26     public String getPassword() {
    27         return password;
    28     }
    29     public void setPassword(String password) {
    30         this.password = password;
    31     }
    32     public List<Order> getOrders() {
    33         return orders;
    34     }
    35     public void setOrders(List<Order> orders) {
    36         this.orders = orders;
    37     }
    38     
    39     
    40 }
     1 package cn.sm1234.dao;
     2 
     3 import java.util.List;
     4 
     5 import cn.sm1234.domain.User;
     6 
     7 public interface UserDao {
     8 
     9     public List<User> queryUserOrder();
    10 }
     1     @Test
     2     public void test3() {
     3         SqlSession sqlSession = SessionUtils.getSession();
     4         // getMapper(): 返回指定接口的动态代理的实现类对象
     5         UserDao dao = sqlSession.getMapper(UserDao.class);
     6         List<User> userList = dao.queryUserOrder();
     7         for (User user : userList) {
     8             System.out.println("用户信息"+user.getId()+"-"+user.getName());
     9             for(Order order : user.getOrders()){
    10                 System.out.println("订单信息"+order.getOrderno()+"-"+order.getProductname());
    11             }
    12         }
    13         sqlSession.commit();
    14         sqlSession.close();
    15     }

    数据库信息:

    测试查询结果:

  • 相关阅读:
    dropdownlist绑定和选中
    uploadify ,前端页面获取值,json,ajax
    sql 列设置默认值,语法查询知识点积累
    两个string数组对应比较
    镜像下载-收藏下
    我用shell写了个mud游戏:武林群侠传
    【shell】十分钟轻松入门;如果没入门,您吐口口水再走吧!
    【命令详解001】top
    那些未曾忘怀的
    mysql慢查询分析工具比较与实战
  • 原文地址:https://www.cnblogs.com/116970u/p/10165015.html
Copyright © 2011-2022 走看看