文档章节

使用ibatis返回复合对象(一对多)

书中迷梦
 书中迷梦
发布于 2016/07/11 18:46
字数 398
阅读 249
收藏 2
点赞 0
评论 1

1.定义订单对象(domain或者POJO)

public class DailySalesOrderModel {
    private String freighter = " ";        /*送货人*/
    private String fullAddress = " ";        /* 完整地址*/
    private List<OrdOrderDetail> orderDetails = new ArrayList<OrdOrderDetail>();/*订单明细*/
    private String actualAmount = "";        /* 实际结算金额*/
    private String debtAmount = " ";        /* 欠款金额*/
    private String payMethod = " ";         /* 支付方式*/
    private String freightNo = " ";        /* 货运单号*/
    private String patientName = " ";        /* 患者名称*/
    private String digest="";/*摘要*/

    //省略get和set方法

}

2.定义sqlMap

2.1 销售订单sql

标红的语句比较关键

<resultMap id="resultOrderInfo" class="com.baosight.b2c.yo.domain.DailySalesOrderModel">
        <result property="freighter" column="FREIGHTER"/>
        <result property="fullAddress" column="FULL_ADDRESS"/>
           <result property="orderDetails" column="{orderId=ID}" select="YO0101.queryOrderDetail"/>
            <result property="actualAmount" column="ACTUAL_AMOUNT"/>
            <result property="payMethod" column="PAY_METHOD"/>
            <result property="freightNo" column="EBS_ORDER_NO"/>
            <result property="patientName" column="PATIENT_NAME"/>
    </resultMap>

2.2 销售明细sql

<resultMap id="resultOrderDetail" class="com.yiyaobao.b2c.common.order.domain.OrdOrderDetail">
        <result property="sku" column="SKU"/>
        <result property="medName" column="MED_NAME"/>
        <result property="commonName" column="COMMON_NAME"/>
        <result property="amount" column="AMOUNT"/>
    </resultMap>

2.3  查询主表sql

<select id="exportDailySalesList" parameterClass="java.util.HashMap" 
            resultMap="resultOrderInfo">
        SELECT
         DISTINCT
                 oo.ID,
                 oo.FREIGHTER,  <!-- 送货员 -->
                 oo.FULL_ADDRESS,  <!-- 完整地址 -->
                 oo.ACTUAL_AMOUNT,  <!-- 实际结算金额 -->
                 CASE oo.PAY_METHOD
                WHEN '01' THEN
                '现金'
                WHEN '02' THEN
                '刷卡'
                WHEN '11' THEN
                '银联'
                WHEN '12' THEN
                '网上银行'
                WHEN '13' THEN
                '微信'
                WHEN '14' THEN
                '支付宝'
                WHEN '21' THEN
                '金融支付'
                END as "PAY_METHOD",  <!-- 支付方法(01-现金;02-刷卡;11-银联;12-网上银行) -->
                 oo.EBS_ORDER_NO,  <!-- EBS订单号 -->
                 oo.PATIENT_NAME <!-- 患者名称 (备注)-->
        FROM (yiyao_b2c.ord_order as  oo LEFT JOIN yiyao_user.usr_user as usr ON oo.USER_ID = usr.ID
            left join yiyao_b2c.ord_order_detail as oodtl on oo.id = oodtl.ORDER_ID)
            LEFT JOIN yiyao_prs.prs_prescription_app as prsapp ON oo.ID=prsapp.ORDER_ID 
       WHERE 1=1 and oo.IS_DELETE=0

</select>

2.4 查询明细

<select id="queryOrderDetail" parameterClass="java.util.HashMap" 
            resultMap="resultOrderDetail">
        SELECT
                SKU,  <!-- SKU -->
                MED_NAME,  <!-- 药品名称 -->
                COMMON_NAME,  <!-- 药品通用名 -->
                AMOUNT <!-- 数量 -->
        FROM yiyao_b2c.ord_order_detail WHERE 1=1
        <isNotEmpty prepend=" AND " property="id">
            ID = #id#
        </isNotEmpty>
        <isNotEmpty prepend=" AND " property="orderId">
            ORDER_ID = #orderId#
        </isNotEmpty>
    </select>

© 著作权归作者所有

共有 人打赏支持
书中迷梦
粉丝 2
博文 24
码字总数 6116
作品 0
徐汇
程序员
加载中

评论(1)

i
itxx2016
推荐国内最流行的ibatis、mybatis代码生成网站 --- fwjava.com
无需任何安装配置,直接在线生成,且十分规范好用.
现在,很多知名的互联网公司都在用它.
ibatis sqlMap 使用

SqlMap的配置是iBatis中应用的核心。这部分任务占据了iBatis开发的70的工作量。 1、命名空间: 在此空间外要引用此空间的元素,则需要加上命名空间名。 2、实体的别名: 如果有用到的全名的地...

为了美好的明天 ⋅ 04/27 ⋅ 0

ibatis MyBatis区别与联系

简介: 本文主要讲述了 iBatis 2.x 和 MyBatis 3.0.x 的区别,以及从 iBatis 向 MyBatis 移植时需要注意的地方。通过对本文的学习,读者基本能够了解 MyBatis 有哪些方面的改进,并能够顺利使...

为了美好的明天 ⋅ 04/17 ⋅ 0

00fly/springmvc_ibatis_plus

#springmvcibatisplus ** 针对ibatis框架的代码生成器项目不再维护了,sorry。。。 ** 说明:如果数据库表中oracle无blob,clob字段,mysql中无text,blob字段请使用 noSupportBCLOB 分支代码...

00fly ⋅ 06/01 ⋅ 0

Java面试----2018年MyBatis常见实用面试题整理

Java面试----2018年MyBatis常见实用面试题整理 1、什么是MyBatis? 答:MyBatis是一个可以自定义SQL、存储过程和高级映射的持久层框架。 2、讲下MyBatis的缓存 答:MyBatis的缓存分为一级缓存...

优惠券活动 ⋅ 04/29 ⋅ 0

MyBatis在注解上使用动态SQL(@select使用if)

1、用标签包围,然后像xml语法一样书写 @Select({"

easonjim ⋅ 2017/08/29 ⋅ 0

MyBatis3-SqlSessionDaoSupport的使用

以下内容引用自http://www.yihaomen.com/article/java/336.htm: 在MyBatis3中这个Mapper接口貌似充当了以前在iBatis2中的DAO层的作用。但事实上,如果有这个Mapper接口不能完成的工作,或者...

easonjim ⋅ 2017/06/22 ⋅ 0

阿里,百度,腾讯等一线互联网公司中,Java开发的招聘标准

金三银四的跳槽热潮即将过去,在这两个月的跳槽的旺季中,作为互联网行业的三大巨头,百度、阿里巴巴、腾讯对于互联网人才有很大的吸引力,他们的员工也是众多互联网同行觊觎的资深工程师、管...

javaxuexi123 ⋅ 04/20 ⋅ 0

OceanBase的正确使用方法

OceanBase不是设计出来的,而是在使用过程中不断进化出来的。因此,系统使用以及运维的方便性至关重要。 OceanBase的使用者是业务系统开发人员,并交由专门的OceanBase DBA来运维。为了方便业...

凌洛 ⋅ 05/19 ⋅ 0

Mybatis中的jdbcType的作用

Mybatis中的jdbcType的作用 使用MyBatis框架做更新操作时,在该字段需要更新的内容为空时,就会出现1111错误,也就是无效的列类型,这个时候你就要使用jdbcType。至于什么时候要使用到javaT...

architect刘源源 ⋅ 05/03 ⋅ 0

使用 ibatis 处理复杂对象数据关系的实例

ibatis 基本介绍 起源于 2001 年的开放源代码项目 ibatis,是一个基于 Java 的持久层框架。与 Hibernate, Toplink 等持久化框架不同,ibatis 是一个 “半自动化”的 ORM 实现。ibatis 没有对...

红薯 ⋅ 2010/09/05 ⋅ 4

没有更多内容

加载失败,请刷新页面

加载更多

下一页

从 Confluence 5.3 及其早期版本中恢复空间

如果你需要从 Confluence 5.3 及其早期版本中的导出文件恢复到晚于 Confluence 5.3 的 Confluence 中的话。你可以使用临时的 Confluence 空间安装,然后将这个 Confluence 安装实例升级到你现...

honeymose ⋅ 今天 ⋅ 0

Java8新增的DateTimeFormatter与SimpleDateFormat的区别

两者最大的区别是,Java8的DateTimeFormatter也是线程安全的,而SimpleDateFormat并不是线程安全。 在并发环境下使用SimpleDateFormat 为了能够在多线程环境下使用SimpleDateFormat,有这三种...

人觉非常君 ⋅ 今天 ⋅ 0

多线程如何控制执行顺序

线程的生命周期说明: 当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态,在线程的生命周期中,它要经过新建(New)、就绪(Runnable)、运行(Running)、...

MarinJ_Shao ⋅ 今天 ⋅ 0

用ZBLOG2.3博客写读书笔记网站能创造今日头条的辉煌吗?

最近两年,著名的自媒体网站今日头条可以说是火得一塌糊涂,虽然从目前来看也遇到了一点瓶颈,毕竟发展到了一定的规模,继续增长就更加难了,但如今的今日头条规模和流量已经非常大了。 我们...

原创小博客 ⋅ 今天 ⋅ 0

MyBatis四大核心概念

本文讲解 MyBatis 四大核心概念(SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession、Mapper)。 MyBatis 作为互联网数据库映射工具界的“上古神器”,训有四大“神兽”,谓之:Sql...

waylau ⋅ 今天 ⋅ 0

以太坊java开发包web3j简介

web3j(org.web3j)是Java版本的以太坊JSON RPC接口协议封装实现,如果需要将你的Java应用或安卓应用接入以太坊,或者希望用java开发一个钱包应用,那么用web3j就对了。 web3j的功能相当完整...

汇智网教程 ⋅ 今天 ⋅ 0

2个线程交替打印100以内的数字

重点提示: 线程的本质上只是一个壳子,真正的逻辑其实在“竞态条件”中。 举个例子,比如本题中的打印,那么在竞态条件中,我只需要一个方法即可; 假如我的需求是2个线程,一个+1,一个-1,...

Germmy ⋅ 今天 ⋅ 0

Django第一期

安装Django 去https://www.djangoproject.com/download/ 下载最新版的Django,然后解压放到Anaconda\Lib\site-packages目录下,然后cmd进入此目录,输入安装命令: python setup.py install ...

大不了敲一辈子代码 ⋅ 今天 ⋅ 0

Springboot2 之 Spring Data Redis 实现消息队列——发布/订阅模式

一般来说,消息队列有两种场景,一种是发布者订阅者模式,一种是生产者消费者模式,这里利用redis消息“发布/订阅”来简单实现订阅者模式。 实现之前先过过 redis 发布订阅的一些基础概念和操...

Simonton ⋅ 今天 ⋅ 0

error:Could not find gradle

一.更新Android Studio后打开Project,报如下错误: Error: Could not find com.android.tools.build:gradle:2.2.1. Searched in the following locations: file:/D:/software/android/andro......

Yao--靠自己 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部