iBatis查询复杂集合

这篇博客展示了如何利用iBatis查询包含用户、订单和订单详情的复杂集合。通过创建数据库表、定义Java模型类和配置iBatis映射文件,实现了从数据库获取并组装成UserInfo对象,包括用户、多个订单及其每个订单的详细信息。
摘要由CSDN通过智能技术生成
  通常我们使用iBatis的select查询都是映射的简单对象,即便在一个查询中连接多个表也是如此,那么既然iBatis是SQL Mapper,也就是说它可以映射复杂集合,我们来看看如何让对象模型向数据模型(关系型数据模型)靠拢。 
    假设在在线购物应用中,我们有用户表User,订单表Order和订单项表OrderItem,它们之间存在的关联是显而易见的。用户可以下订单,而订单中可以包含多个项。 
    我们的数据库设计如下: 
Sql代码   收藏代码
  1. CREATE TABLE `user` (  
  2. `userId`  int(11) NOT NULL AUTO_INCREMENT ,  
  3. `userName`  varchar(50) NULL DEFAULT NULL ,  
  4. `password`  varchar(32) NULL DEFAULT NULL ,  
  5. `mobile`  varchar(11) NULL DEFAULT NULL ,  
  6. `email`  varchar(50) NULL DEFAULT NULL ,  
  7. `age`  int(3) NULL DEFAULT NULL ,  
  8. PRIMARY KEY (`userId`)  
  9. )  

    订单表为: 
Sql代码   收藏代码
  1. CREATE TABLE `order` (  
  2. `orderId`  int(11) NOT NULL AUTO_INCREMENT ,  
  3. `orderName`  varchar(50) NULL DEFAULT NULL ,  
  4. `generateTime`  datetime NULL DEFAULT NULL ,  
  5. `userId`  int(11) NULL DEFAULT NULL ,  
  6. PRIMARY KEY (`orderId`)  
  7. )  

    订单项表为: 
Sql代码   收藏代码
  1. CREATE TABLE `orderItem` (  
  2. `orderItemId`  int(11) NOT NULL AUTO_INCREMENT ,  
  3. `itemName`  varchar(50) NULL DEFAULT NULL ,  
  4. `quantity`  int(3) NULL DEFAULT NULL ,  
  5. `price`  float NULL DEFAULT NULL ,  
  6. `orderId`  int(11) NOT NULL ,  
  7. PRIMARY KEY (`orderItemId`)  
  8. )  

    三个表之前通过userId和orderId进行关联,这里仅做示例性说明,并没有添加物理外键关联。 
    下面我们设计POJO来描述这三个对象: 
Java代码   收藏代码
  1. package ibatis.model;  
  2. public class OrderItem implements java.io.Serializable {  
  3.     private Integer orderItemId;  
  4.     private String itemName;  
  5.     private int quantity;  
  6.     private float price;  
  7.     private Integer orderId;  
  8.     public OrderItem() {  
  9.     }  
  10.     public OrderItem(Integer orderItemId, String itemName, int quantity,  
  11.             float price, Integer orderId) {  
  12.         super();  
  13.         this.orderItemId = orderItemId;  
  14.         this.itemName = itemName;  
  15.         this.quantity = quantity;  
  16.         
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT_驿站

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值