<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. c++ vector 的使用

    vector(向量): C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的. 用法: 1. 首先在程 ...

  2. ssky-keygen + ssh-copy-id 无密码登陆远程LINUX主机

    ssky-keygen + ssh-copy-id 无密码登陆远程LINUX主机 使用下例中ssky-keygen和ssh-copy-id,仅需通过3个步骤的简单设置而无需输入密码就能登录远程Linu ...

  3. Web前端开发规范文档你需要知道的事--HTML、css、js、文档等需要规范内容

          规范目的 为提高团队协作效率,便于后台人员添加功能及前端后期优化维护,输出高质量的文档,特制订此文档.本规范文档一经确认,前端开发人员必须按本文档规范进行前台页面开发.本文档如有不对或者不 ...

  4. ckeditor的详细配置

    CKEditor 3 JavaScript API Documentation : http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.con ...

  5. 【C语言】17-预处理指令3-文件包含

    这讲介绍最后一个预处理指令---文件包含 一.基本概念 其实我们早就有接触文件包含这个指令了, 就是#include,它可以将一个文件的全部内容拷贝另一个文件中. 二.一般形式 1.第1种形式#inc ...

  6. Everything文件名实时搜索||解决局域网文件共享问题

    内容概要:Everything中文版下载地址及使用.用Everything轻松解决局域网文件共享问题.Everything语言设置问题 另:Everything只支持NTFS格式的磁盘(工作原理的缘故 ...

  7. 简单的form表单操作(Servlet)

    Servlet模型 [表单的处理][模型(1)] ●HTML网页 <!DOCTYPE html> <html> <head> <meta charset=&q ...

  8. OpenCV学习笔记——多种Smooth平滑处理

    opencv库提供了好几种模糊平滑Smooth操作的类型作为cvSmooth的参数传入,从而达到不同的平滑效果,另外复习了一下如何复制一份图像和重新调整图像大小. 调整图像大小目前是按照一下步骤进行: ...

  9. Maven问题总结:could not resolve archetype xxxxxxx from any of the configured repositories

    错误提示 Eclipse中通过Archetype创建Maven项目时报错:Could not resolve archetype xxxxxxx from any of the configured ...

  10. 【转载】wireshark:no interface can be used for capturing in this system with the current configuration

    转自:wireshark:no interface can be used for capturing in this system with the current configuration 通过 ...