<sqlMap namespace="egis.scms.order">
    <typeAlias alias="ScmsOrderDTO" type="com.paic.egis.scms.order.dto.ScmsOrderDTO"></typeAlias>
    <typeAlias alias="ScmsOrderInsureDTO" type="com.paic.egis.scms.order.dto.ScmsOrderInsureDTO"></typeAlias>

<!-- 生成序列号 action中通过这一个select查询到一个序列号,此序列号再从java中传入sql中-->
 <select id="generateSCMSOrderInsureId" resultClass="string">
     select nextval('scms_order_insure_seq')
 </select>

<sql id="withFlag">
         <isEqual prepend="and" property="flag" compareValue="2">
                  <![CDATA[                                    
                        o.order_status in ('03','07')                        
      ]]>
          </isEqual>
          <isEqual prepend="and" property="flag" compareValue="3">
                  <![CDATA[
                         o.order_status in ('02','04','05','06','08')
                  ]]>
          </isEqual>
          <isEqual prepend="and" property="flag" compareValue="4">
                  <![CDATA[
                         o.order_status in ('09','10','15')
                  ]]>
          </isEqual>
 
 </sql>

<!-- 订单总数查询 --> 
 <select id="getCountByStatus" parameterClass="java.util.HashMap"  resultClass="java.lang.Integer">
   select count(0) as "orderCount"
      from   scms_order  o
      where  o.user_id=#userId#      
     and  o.pay_channel = #payChannel#
     and  o.order_client_type = #orderClientType#
        <include refid="withFlag" />
 </select>

<!-- 创建订单   --> 
 <insert id ="createScmsOrder" parameterClass="java.util.HashMap">
  INSERT INTO scms_order(
     id_scms_order,
     order_date,
     order_status,
     is_upload,
     order_client_type,
     order_channel,
     order_amount,
     user_id,
     business_type,
     pay_channel,
     pay_medical_no,
     bank_name,
     bank_no,
     is_change_pay,
     pay_account_no      
   )    
    VALUES (
        'OD' || lpad(#idScmsOrder#, 14, '0'),
     to_timestamp(#orderDate#,'yyyy-mm-dd hh24:mi:ss'),
     #orderStatus#,
     '01',
     #orderClientType#,
     #orderChannel#,
     #orderAmount#,
     #userId#,
     #businessType#,
     #payChannel#,
     #payMedicalNo#,
     #bankName#,
     #bankNo#,
     #isChangePay#,
     #payAccountNo#    
     );
 </insert>

<!-- 查询订单列表-->
  <select id="orderList" resultClass="java.util.HashMap" parameterClass="java.util.HashMap">
        select
          o.id_scms_order as "idScmsOrder",
          o.order_date as "orderDate", 
          o.order_status  as "orderStatus",
          op.id_scms_product  as "idScmsProduct",
          o.order_status as "orderStatus"
         from scms_order o,
              scms_order_product   op
         where o.id_scms_order=op.id_scms_order
           and o.user_id=#userId#      
     and o.pay_channel = #payChannel#
     and o.order_client_type = #orderClientType#
              and o.order_status in ('02','03','04','05','06','07','08','09','10')                        
    </select>

<!-- 分页查询订单列表-->
 <select id="orderListByFlagPage" resultClass="java.util.HashMap" parameterClass="java.util.HashMap">
       select
         o.id_scms_order as "idScmsOrder",
         o.order_date as "orderDate", 
         o.order_status  as "orderStatus",
         op.id_scms_product  as "idScmsProduct",
         o.order_status as "orderStatus"
        from scms_order o,
             scms_order_product   op
        where o.id_scms_order=op.id_scms_order
          and o.user_id=#userId#      
    and o.pay_channel = #payChannel#
    and o.order_client_type = #orderClientType#
          <include refid="withFlag" />
          order by o.id_scms_order desc
   <isNotEmpty property="offset">
   limit #pageSize# offset #offset#
   </isNotEmpty>
                                  
   </select>

<!-- 新增投保-被保人信息  -->
 <insert id ="insertOrderApplicInsur"  parameterClass="java.util.HashMap">  
  <selectKey resultClass="java.lang.String" keyProperty="idOrderIns">
   select sys_guid()--生成序列号。也可以直接在列的赋值处直接写sys_guid()
  </selectKey>
  INSERT INTO scms_application_insured
     (id_order_ins,
     id_order_policy,
     ins_user_name,
     ins_gender,
     ins_birth_date,
     ins_id_type,
     ins_id_no,
     br_no,
     applicant_relation
    )
      VALUES (      
        #idOrderIns#,// 此处可以直接写为sys_guid();不需要上面那一步
        #idOrderPolicy#,
        #insUserName#,
        #insGender#,
        to_date(#insBirthDate#,'yyyy-mm-dd'),
        #insIdType#,
        #insIdNo#,
        #brNo#,
        #applicantRelation#
   )
 </insert>

<update id="updateOrderInfo" parameterClass="java.util.HashMap">
  UPDATE scms_order
  <dynamic prepend="set">
   <isNotEmpty prepend="," property="orderStatus">
    order_status=#orderStatus#
   </isNotEmpty>
   <isNotEmpty prepend="," property="failReason">
    fail_reason=#failReason#
   </isNotEmpty>
   <isNotEmpty prepend="," property="failCode">
    fail_code=#failCode#
   </isNotEmpty>
   <isNotEmpty prepend="," property="transactionId">
    transaction_id=#transactionId#
   </isNotEmpty>
   <isNotEmpty prepend="," property="transactionDate">
    transaction_date=to_timestamp(#transactionDate#,'YYYY-MM-DD HH24:MI:SS')
   </isNotEmpty>
   <isNotEmpty prepend="," property="payDate">
    pay_date=to_timestamp(#payDate#,'YYYY-MM-DD HH24:MI:SS')
   </isNotEmpty>
   <isNotEmpty prepend="," property="payChannel">
    pay_channel=#payChannel#
   </isNotEmpty>
   <isNotEmpty prepend="," property="payAccountNo">
    pay_account_no=#payAccountNo#
   </isNotEmpty>
   <isNotEmpty prepend="," property="bankName">
    bank_name=#bankName#
   </isNotEmpty>
   <isNotEmpty prepend="," property="bankNo">
    bank_no=#bankNo#
   </isNotEmpty>
   <isNotEmpty prepend="," property="thirdOrderId">
    third_order_id=#thirdOrderId#
   </isNotEmpty>
   <isNotEmpty prepend="," property="reundwrtFlag">
    reundwrt_flag=#reundwrtFlag#
   </isNotEmpty>
   <isNotEmpty prepend="," property="transactionThirdId">
    transaction_third_id=#transactionThirdId#
   </isNotEmpty>
   <isNotEmpty prepend="," property="isUpload">
    is_upload=#isUpload#
   </isNotEmpty>
   <isNotEmpty prepend="," property="orderAmount">
    order_amount=#orderAmount#
   </isNotEmpty>
  </dynamic>
  where id_scms_order=#idScmsOrder#
 </update>

<update id="updateOrderInfoByThirdId" parameterClass="java.util.HashMap">
  UPDATE scms_order
  <dynamic prepend="set">
   <isNotEmpty prepend="," property="orderStatus">
    order_status=#orderStatus#
   </isNotEmpty>
   <isNotEmpty prepend="," property="failReason">
    fail_reason=#failReason#
   </isNotEmpty>
   <isNotEmpty prepend="," property="failCode">
    fail_code=#failCode#
   </isNotEmpty>
   <isNotEmpty prepend="," property="transactionId">
    transaction_id=#transactionId#
   </isNotEmpty>
   <isNotEmpty prepend="," property="transactionDate">
    transaction_date=to_timestamp(#transactionDate#,'YYYY-MM-DD HH24:MI:SS')
   </isNotEmpty>
   <isNotEmpty prepend="," property="payDate">
    pay_date=to_timestamp(#payDate#,'YYYY-MM-DD HH24:MI:SS')
   </isNotEmpty>
   <isNotEmpty prepend="," property="payChannel">
    pay_channel=#payChannel#
   </isNotEmpty>
   <isNotEmpty prepend="," property="payAccountNo">
    pay_account_no=#payAccountNo#
   </isNotEmpty>
   <isNotEmpty prepend="," property="bankName">
    bank_name=#bankName#
   </isNotEmpty>
   <isNotEmpty prepend="," property="bankNo">
    bank_no=#bankNo#
   </isNotEmpty>
   <isNotEmpty prepend="," property="thirdOrderId">
    third_order_id=#thirdOrderId#
   </isNotEmpty>
   <isNotEmpty prepend="," property="reundwrtFlag">
    reundwrt_flag=#reundwrtFlag#
   </isNotEmpty>
  </dynamic>
  where transaction_third_id=#transactionThirdId#
 </update>

<!-- 查询订单列表,并且关联用户信息 (总记录数) -->
 <select id="count_orderListForPay" resultClass="java.lang.Integer"
  parameterClass="java.util.HashMap">
  select count(0) from (
  <include refid="sql_orderListForPay" />
  ) as t
 </select>

<!-- 查询订单列表,并且关联用户信息 (分页查询) -->
 <select id="orderListForPay" resultClass="com.paic.egis.scms.pay.dto.PayOrderDTO"
  parameterClass="java.util.HashMap">
  <include refid="sql_orderListForPay" />
  order by idScmsOrder desc
  <isNotEmpty property="offset">
   limit #pageSize# offset #offset#
  </isNotEmpty>
 </select>
 
 <!-- 生成订单产品号 -->
 <select id="generateSCMSOrderProductId" resultClass="string">
     select nextval('scms_order_product_seq')
 </select>

<select id="queryOrderInsureList" resultClass="com.paic.egis.scms.order.dto.ScmsOrderInsureDTO"
  parameterClass="java.util.HashMap">
  SELECT
  i.id_order_policy AS idOrderPolicy,
  i.appno AS appNo,
  i.polno AS polNo,
  i.certno AS certNo,
  i.issure_date AS issureDate,
  i.underwt_date AS underwtDate
  FROM
  scms_order_insure i
  <dynamic prepend="where">
   <isNotEmpty prepend="and" property="idOrderProduct">
    i.id_order_product = #idOrderProduct#
   </isNotEmpty>
   <isNotEmpty prepend="and" property="idOrderPolicy">
    i.id_order_policy = #idOrderPolicy#
   </isNotEmpty>
  </dynamic>
 </select>

<update id ="updateScmsOrderProduct"  parameterClass="java.util.HashMap">
  update scms_order_product
  <dynamic prepend="set">
    <isNotEmpty prepend="," property="idScmsProduct">
     id_scms_product=#idScmsProduct#
    </isNotEmpty>
    <isNotEmpty prepend="," property="idInsurPrdCombined">
     id_insur_prd_combined=#idInsurPrdCombined#
    </isNotEmpty>      
    <isNotEmpty prepend="," property="effDate">
     eff_Date=to_timestamp(#effDate#,'yyyy-mm-dd hh24:mi:ss')
    </isNotEmpty>
    <isNotEmpty prepend="," property="matuDate">
     matu_date=to_timestamp(#matuDate#,'yyyy-mm-dd hh24:mi:ss')
    </isNotEmpty>   
    <isNotEmpty prepend="," property="empNo">
     emp_no=#empNo#
    </isNotEmpty>
    <isNotEmpty prepend="," property="participatorCode">
     participator_Code=#participatorCode#
    </isNotEmpty>
    <isNotEmpty prepend="," property="insurerName">
     insurer_Name=#insurerName#
    </isNotEmpty>  
    <isNotEmpty prepend="," property="insurerGender">
     insurer_Gender=#insurerGender#
    </isNotEmpty>
    <isNotEmpty prepend="," property="insurerBirthDate">
     insurer_birth_date=to_date(#insurerBirthDate#,'yyyy-mm-dd')
    </isNotEmpty>   
    <isNotEmpty prepend="," property="insurerIdType">
     insurer_id_type=#insurerIdType#
    </isNotEmpty> 
       <isNotEmpty prepend="," property="insurerIdNo">
     insurer_id_no=#insurerIdNo#
    </isNotEmpty>  
     <isNotEmpty prepend="," property="sinsurPeriodType">
     sinsur_period_type=#sinsurPeriodType#
    </isNotEmpty>   
     <isNotEmpty prepend="," property="insurPeriod">
     insur_period=#insurPeriod#
    </isNotEmpty>   
    <isNotEmpty prepend="," property="memberDiscount">
     member_discount=#memberDiscount#
    </isNotEmpty>   
    <isNotEmpty prepend="," property="idInsurPrdItem">
     id_insur_prd_item=#idInsurPrdItem#
    </isNotEmpty>   
    <isNotEmpty prepend="," property="idInsurPrdItem">
     base_price=#basePrice#
    </isNotEmpty>
    <isNotEmpty prepend="," property="coverageAmount">
     coverage_amount=#coverageAmount#
    </isNotEmpty>
    <isNotEmpty prepend="," property="combinedPlanCode">
     combined_plan_code=#combinedPlanCode#  
    </isNotEmpty>   
    </dynamic>
    <dynamic prepend="where">
   <isNotEmpty prepend="and" property="idOrderProduct">
    id_order_product=#idOrderProduct#
   </isNotEmpty>
   <isNotEmpty prepend="and" property="idScmsOrder">
    id_scms_order= #idScmsOrder#
   </isNotEmpty>
  </dynamic>                
 </update>

<select id="queryItemByCombinedID" resultClass="java.util.HashMap" parameterClass="java.util.List">
  SELECT
   ID_INSUR_PRD_ITEM "insurPrdItemId",  
   ID_INSUR_PRD_COMBINED "insurPrdCombinedId",   
   ITEM_NAME "itemName",   
   ITEM_DESC "itemDesc",
   PLAN_CODE "planCode",   
   UNDWRT_RANGE "undwrtRange"   
  FROM         
       SCMS_INSUR_PRODUCT_ITEM                      
        WHERE
   ID_INSUR_PRD_COMBINED in
   <iterate  open="(" close=")" conjunction=","> #[]# </iterate>
     
 </select>

以上不需要把list的name值传到sql中,跟=#name值#是不一样的。这里不需要写

//  List<String> combinedParamList = new ArrayList<String>();
//  for(Map<String, Object> map : combineList){
//   combinedParamList.add((String)map.get(combinedIdCloumn));
//  }
//  List<Map<String, Object>> itemList = insuranceProductDao
//    .queryItemByCombinedList(combinedParamList);

mybatis的xlm的sql的更多相关文章

  1. 【mybatis深度历险系列】mybatis中的动态sql

    最近一直做项目,博文很长时间没有更新了,今天抽空,学习了一下mybatis,并且总结一下.在前面的博文中,小编主要简单的介绍了mybatis中的输入和输出映射,并且通过demo简单的介绍了输入映射和输 ...

  2. Mybatis入门之动态sql

    Mybatis入门之动态sql 通过mybatis提供的各种标签方法实现动态拼接sql. 1.if.where.sql.include标签(条件.sql片段) <sql id="sel ...

  3. mybatis 详解------动态SQL

    mybatis 详解------动态SQL   目录 1.动态SQL:if 语句 2.动态SQL:if+where 语句 3.动态SQL:if+set 语句 4.动态SQL:choose(when,o ...

  4. mybatis中的动态SQL

    在实际开发中,数据库的查询很难一蹴而就,我们往往要根据各种不同的场景拼接出不同的SQL语句,这无疑是一项复杂的工作,我们在使用mybatis时,mybatis给我们提供了动态SQL,可以让我们根据具体 ...

  5. mybatis是如何防止SQL注入的

    mybatis是如何防止SQL注入的 1.首先看一下下面两个sql语句的区别: <select id="selectByNameAndPassword" parameterT ...

  6. MyBatis是如何解决Sql注入的

    转:[转]mybatis如何防止sql注入 java中预处理PrepareStatement为什么能起到防止SQL注入的作用??!! 一.SQL注入 sql注入大家都不陌生,是一种常见的攻击方式,攻击 ...

  7. Atitit mybatis快速开发 的sql api接口

    Atitit mybatis快速开发 的sql api接口 1.1. sql模式 开发速度大大快与 映射模式1 1.2. MyBatis Mapper1 1.2.1. 代码2 1.2.2. 原理2 1 ...

  8. MyBatis是支持普通 SQL查询

    MyBatis是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索.MyBatis 使用简单的 XML或注解用于配置 ...

  9. mybatis执行多条sql语句

    1,mybatis执行多条sql语句,有以下几种思路, a,存储过程 b,修改jdbc的参数,允许执行多条语句,如下所示: sqlserver可以直接使用begin,end来执行多条语句, mysql ...

随机推荐

  1. u盘文件系统故障的修复方法

    比如U盘挂载的文件系统是/dev/sda1,且文件系统有故障(FAT: Filesystem error) 修复U盘文件系统故障 sudo dosfsck -v -a /dev/sda1

  2. 用C语言实现素数筛法获取一亿(100000000)以内的全部素数

    具体筛法是:先把n个自然数按次序排列起来.1不是质数,也不是合数,要划去.第二个数2是质数留下来,而把2后面所有能被2整除的数都划去.2后面第一个没划去的数是3,把3留下,再把3后面所有能被3整除的数 ...

  3. winform学习之-----关于按键操作的一些小知识(如何获取焦点所在的当前控件)20160623

    1.设置整个窗体keydown事件的时候,要设置keyPreview=true; 2.获取当前拥有焦点的控件: 关于这个问题,自己也是纠结死了,在网上搜了好多相关的问题答案,搜出的结果是: //API ...

  4. eWebeditor编辑器上传图片的设置程序

    protected void Button1_Click(object sender, EventArgs e) { if (this.uploadfile.PostedFile.FileName.E ...

  5. 李洪强 - C语言8-Scanf函数

    C语言的scanf函数 一.变量的内存分析 (一)字节与地址 ①. 内存以字节为单位 每个字节都有自己的内存地址,根据地址就可以找到该字节.整个内存相当于一整个酒店,而酒店以房间为单位,在这里每个房间 ...

  6. Area Under roc Curve(AUC)

    AUC是一种用来度量分类模型好坏的一个标准. ROC分析是从医疗分析领域引入了一种新的分类模型performance评判方法. ROC的全名叫做Receiver Operating Character ...

  7. Linux /etc/passwd 和 /etc/group 文件格式

    passwd: /etc/passwd 文件结构 2011-04-29 16:32:54| 分类: ubuntu技巧 | 标签:passwd linux ubuntu fadero centos./e ...

  8. 对于默认 Windows NT 安装的 SID 值

    https://support.microsoft.com/en-us/kb/163846/zh-cn

  9. nova help network-create

    chen@controller:~$ nova help network-create usage: nova network-create [--fixed-range-v4 <x.x.x.x ...

  10. NSQ:分布式消息队列学习记录

    参考资料: NSQ:分布式的实时消息平台 初识NSQ分布式实时消息架构 深入NSQ之旅 nsq topic和channel的区别