<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. 【wikioi】1553 互斥的数(hash+set)

    http://wikioi.com/problem/1553/ 一开始我也知道用set来判a[i]/p是否在集合中,在的话就直接删掉. 但是我没有想到要排序,也没有想到当存在a,b使得a/p==b时到 ...

  2. SQLyog 配置SQL Assitant

    在上一篇博文“MySQL配置SQL Assistant提示”中,我介绍了配置SQL Assitant自带的SQL Editor连接MySQL数据库的配置,但是试用两天后发现,SQL Editor不支持 ...

  3. DELPHI的split函数的各种实现方法(转)

    一.单字符 function split(s,s1:string):TStringList;beginResult:=TStringList.Create;while Pos(s1,s)>0 d ...

  4. 使用递归方法实现,向FTP服务器上传整个目录结构、从FTP服务器下载整个目录到本地的功能

    我最近由于在做一个关于FTP文件上传和下载的功能时候,发现Apache FTP jar包没有提供对整个目录结构的上传和下载功能,只能非目录类型的文件进行上传和下载操作,后来我查阅很多网上的实现方法,再 ...

  5. 三层交换单臂路由vlan间通信综合实验之降龙要点--Lee

    单臂路由三层交换机提供vlan间的通信之菜鸟之降龙详解要点: 图示 PC:左到右依次设置IP172.16.10.1,    20.1,  30.1,   40,1  ,50,1  /24 网关10.2 ...

  6. FastDFS常见命令

    1: 启动FastDFS tracker: ./fdfs_trackered  .../tracker.conf storage: ./fdfs_storaged  .../storage.conf ...

  7. [杂谈]交通工具orca card

    How and Where to Use the ORCA Card The Microsoft ORCA card provides unlimited rides on all buses, tr ...

  8. PHP常用正则表达式汇总

    1.    平时做网站经常要用正则表达式,下面是一些讲解和例子,仅供大家参考和修改使用: 2.    "^\d+$" //非负整数(正整数 + 0) 3.    "^[0 ...

  9. Linux 每天自动备份mysql数据库的方法

    Linux 每天自动备份mysql数据库的方法 作者: 字体:[增加 减小] 类型:转载   linux下为了安全有时候需要自动备份mysql数据库,下面是具体的实现步骤.   /usr/bin为my ...

  10. navicat for mysql 10.1.7注册码

    终于找到一个可用的了:名,组织,注册码都是:NAVN-LNXG-XHHX-5NOO 还有一个 注册码:NAVH-WK6A-DMVK-DKW3名称和组织不用填写   好像都可以用