<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. 【BZOJ】1303: [CQOI2009]中位数图(特殊的技巧)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1303 依旧是题解流,,,不看题解没法活,,,第一眼就是瞎搞,然后就是暴力,显然TLE..题解啊题解. ...

  2. BZOJ3925: [Zjoi2015]地震后的幻想乡

    Description 傲娇少女幽香是一个很萌很萌的妹子,而且她非常非常地有爱心,很喜欢为幻想乡的人们做一些自己力所能及的事情来帮助他们. 这不,幻想乡突然发生了地震,所有的道路都崩塌了.现在的首要任 ...

  3. UOJ#77. A+B Problem

    题目名称是吸引你点进来的. 从前有个 n 个方格排成一行,从左至右依此编号为 1,2,⋯,n. 有一天思考熊想给这 n 个方格染上黑白两色. 第 i 个方格上有 6 个属性:ai,bi,wi,li,r ...

  4. JAVA生成RSA非对称型加密的公钥和私钥(利用JAVA API)

    非对称型加密非常适合多个客户端和服务器之间的秘密通讯,客户端使用同一个公钥将明文加密,而这个公钥不能逆向的解密,密文发送到服务器后有服务器端用私钥解密,这样就做到了明文的加密传送. 非对称型加密也有它 ...

  5. Qt Examples Qt实例汇总

    ActiveQt Examples Using ActiveX from Qt applications. Animation Framework Examples Doing animations ...

  6. openstack创建虚拟机的步骤

    图片来自互联网. 虚拟机启动过程如下: 1.界面或命令行通过RESTful API向keystone获取认证信息.2.keystone通过用户请求认证信息,并生成auth-token返回给对应的认证请 ...

  7. [转载]从GetSafeHwnd()和GetSafeHandle()分析句柄和指针

    GetSafeHwnd()和GetSafeHandle()的主要区别: 1.使用者不同: (1)窗体使用: GetSafeHwnd()用于获取窗体的安全句柄(即HWND),有了HWND我们就可以方便的 ...

  8. WPF之拖动项滚动条自滚动(当拖动项到达高度的边界时候滚动条自己可以上下滚动)

    参考 http://www.cnblogs.com/ListenFly/p/3281997.html Point svPoint = e.GetPosition(sv); if (sv.ActualH ...

  9. BNF 巴科斯范式

    BNF 巴科斯范式(BNF: Backus-Naur Form 的缩写)是由 John Backus 和 Peter Naur 首先引入的用来描述计算机语言语法的符号集.现在,几乎每一位新编程语言书籍 ...

  10. Javascript 统计复选框选中个数

    var checked = document.getElementsByName("checked_c[]"); var checked_counts = 0; for(var i ...