入参有类型

1、xml
<parameterMap id="creatReportMap" class="java.util.HashMap">
    <parameter property="claimNoParam" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"></parameter>
    <parameter property="caseReportDto" jdbcType="STRUCT" javaType="java.lang.Object" mode="IN" typeName="CLMCDE.REC_CLAIM_REPORT"
        typeHandler="com.sinolife.claim.basic.dto.ClaimReportTypeHandler"/>
    <parameter property="handType" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"></parameter>
    <parameter property="startWorkflowFlag" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"></parameter>
    <parameter property="claimNo" jdbcType="VARCHAR" javaType="java.lang.String" mode="OUT"/>
    <parameter property="flag" jdbcType="VARCHAR" javaType="java.lang.String" mode="OUT"/>
    <parameter property="message" jdbcType="VARCHAR" javaType="java.lang.String" mode="OUT"/>
</parameterMap>
<procedure id="creatReport" parameterMap="creatReportMap">
    {call l_claim_report_pkg.create_report(?,?,?,?,?,?,?)}           
</procedure>

2、java
    /**
     * 新报案
     */

    public String creatReport(CaseReportDto caseReportDto){
        Map pMap = new HashMap();
        //理赔号
        pMap.put("claimNoParam", caseReportDto.getClaimNo());
        pMap.put("caseReportDto", caseReportDto);
        if("deal".equals(caseReportDto.getModuleId())){
            pMap.put("handType""2");
        }else{
            pMap.put("handType""1");
        }
        //工作流标志,PKG是否启动工作流
        if(caseReportDto.getStartWorkflowFlag()!=null && "Y".equals(caseReportDto.getStartWorkflowFlag())){
            pMap.put("startWorkflowFlag""Y");
        }else{
            pMap.put("startWorkflowFlag""N");
        }
 
        getSqlMapClientTemplate().queryForList(CaseReportInfoDao.class.getName()+".creatReport", pMap);
 
        if("Y".equals(pMap.get("flag"))){
            return (String)pMap.get("claimNo");
        }else{
            throw new RuntimeException(""+pMap.get("message"));
        }
    }

package com.sinolife.claim.basic.dto;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import oracle.sql.STRUCT;
import oracle.sql.StructDescriptor;
import com.ibatis.sqlmap.engine.type.BaseTypeHandler;
import com.ibatis.sqlmap.engine.type.TypeHandler;
import com.sinolife.sf.framework.comm.ConnectionUtil;
 
/**
* 处理CLMCDE.REC_CLAIM_REPORT的handler
*
*/

public class ClaimReportTypeHandler extends BaseTypeHandler implements TypeHandler{
 
    @Override
    public Object getResult(ResultSet arg0, String arg1) throws SQLException {
        // TODO Auto-generated method stub
        return null;
    }
 
    @Override
    public Object getResult(ResultSet arg0, int arg1) throws SQLException {
        // TODO Auto-generated method stub
        return null;
    }
 
    @Override
    public Object getResult(CallableStatement arg0, int arg1)
            throws SQLException {
        // TODO Auto-generated method stub
        return null;
    }
 
    @Override
    public void setParameter(PreparedStatement ps, int i, Object parameter,    String jdbcType) throws SQLException {
        Connection con = ps.getConnection();
        con = ConnectionUtil.getNativeConnection(con);
        CaseReportDto caseReportDto = (CaseReportDto)parameter;
 
        Object[] result = new Object[28];
        result[0= caseReportDto.getClaimInfo().getClientNo();
        result[1= caseReportDto.getCaseReportInfo().getAccidentStateCode();
        result[2= new java.sql.Date(caseReportDto.getCaseReportInfo().getAccidentDate().getTime());
        result[3= caseReportDto.getCaseReportInfo().getDeathDate()!=null?new java.sql.Date(caseReportDto.getCaseReportInfo().getDeathDate().getTime()):null;
        result[4= caseReportDto.getCaseReportInfo().getAreaCode();
        result[5= caseReportDto.getCaseReportInfo().getAccidentAddr();
        result[6= caseReportDto.getCaseReportInfo().getIsOutcountry();
        result[7= caseReportDto.getCaseReportInfo().getAccidentHandleunit();
        result[8= caseReportDto.getCaseReportInfo().getAccidentHandleunitPhone();
        result[9= caseReportDto.getCaseReportInfo().getAccidentHandleunitContact();
        result[10= caseReportDto.getCaseReportInfo().getAccidentHandleunitContactPhone();
        result[11= caseReportDto.getCaseReportInfo().getAccidentHandleunitContactCellphone();
        result[12= caseReportDto.getCaseReportMedicalinfo().getHospitalName();
        result[13= caseReportDto.getCaseReportMedicalinfo().getHospitalCode();
        result[14= caseReportDto.getCaseReportMedicalinfo().getDepartmentCode();
        result[15= caseReportDto.getCaseReportMedicalinfo().getBedNo();
        result[16= caseReportDto.getCaseReportInfo().getCaseReporterName();
        result[17= caseReportDto.getCaseReportInfo().getCaseReporterPhone();
        result[18= caseReportDto.getCaseReportInfo().getCaseReporterCellphone();
        result[19= caseReportDto.getCaseReportInfo().getCaseReporterType();
        result[20= caseReportDto.getCaseReportInfo().getReportRelationCode();
        result[21= caseReportDto.getCaseReportInfo().getReportType();
        result[22= caseReportDto.getCaseReportInfo().getContactName();
        result[23= caseReportDto.getCaseReportInfo().getContactPhone();
        result[24= caseReportDto.getCaseReportInfo().getContactCellphone();
        result[25= caseReportDto.getCaseReportInfo().getAccidentDesc();
        result[26= caseReportDto.getCaseReportInfo().getCaseReportRemark();
        result[27= caseReportDto.getCaseReportInfo().getRegistUsername();
 
        StructDescriptor structdesc = new StructDescriptor("CLMCDE.REC_CLAIM_REPORT", con);
        STRUCT struct = new STRUCT(structdesc, con, result);
 
        ps.setObject(i, struct);
 
    }
 
    @Override
    public Object valueOf(String arg0) {
        // TODO Auto-generated method stub
        return null;
    }
 
}

3、pkg
  PROCEDURE create_report(
      p_claim_no_param                    IN         clm_claim_info.claim_no%TYPE,
    p_rec_claim_report        IN     CLMCDE.REC_CLAIM_REPORT,
    p_handle_type             IN     VARCHAR2,
    p_start_workflow_flag     IN     VARCHAR2,
    p_claim_no                OUT    clm_claim_info.claim_no%TYPE,
    p_flag                    OUT    VARCHAR2,
    p_message                 OUT    VARCHAR2)
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值