工作中ibatis中的连表查询及in()的使用案例

public class CbExchangeOrderArr extends BaseBean implements Serializable {

    /**
     *
     */
    private static final long serialVersionUID = -1213585508833130943L;
    /**
     * 订单号
     */
    private Long              id;
    /**
     * 创建时间
     */
    private Date              createTime;
    /**
     * 修改时间
     */
    private Date              modifyTime;
    /**
     * 有效期截止时间
     */
    private Date              expirationTime;
    /**
     * 商户端系统的订单号/流水号
     */
    private String            orderIdIn3rdSys;
    /**
     * 批次号
     */
    private String            batchNumber;
    /**
     * 子批次号
     */
    private String            subBatchNumber;
    /**
     * 付款人ID
     */
    private String            payerId;
    /**
     * 是否商户
     */
    private String            isMerchant;
    /**
     * 付款人信息
     */
    private Long              payerInfoId;
    /**
     * 源币种
     */
    private String            sourceCurrency;
    /**
     * 源金额
     */
    private BigDecimal        sourceAmount;
    /**
     * 源实付金额
     */
    private BigDecimal        sourceActualAmount;
    /**
     * 汇率
     */
    private String            exchangeRate;
    /**
     * 收款人ID
     */
    private Long              payeeId;
    /**
     * 是否商户
     */
    private String            isMerchantPayee;
    /**
     * 收款人信息
     */
    private Long              payeeInfoId;
    /**
     * 目的币种
     */
    private String            targetCurrency;
    /**
     * 目的金额
     */
    private BigDecimal        targetAmount;
    /**
     * MCC code
     */
    private String            mccCode;
    /**
     * 状态, invalid:无效 valid:有效
     */
    private String            status;
    /**
     * 汇兑状态
     */
    private String            exchangeStatus;
    /**
     * 付款状态
     */
    private String            paymentStatus;
    /**
     * 是否被处理,Y:是 ,N:否
     */
    private String            isProcessed;
    /**
     * 是否手工退款 红冲单标识 Y:是 N:否
     */
    private String            isManualRefund;
    /**
     * 付款人类型
     */
    private String            payerType;
    /**
     * 收款人类型
     */
    private String            payeeType;

    /**
     * 冗余收款人表中的姓名
     */
    private String name;
    /**
     * 冗余收款人表中的银行账号
     */
    private String bankAccount;
    
 

    /**
     * 国家代码
     */
    private String            countryCode;

    /**
     * 证件类型
     */
    private String            idType;

    /**
     * 证件号
     */
    private String            idNumber;

    /**
     * 收款人地址
     */
    private String            address;

    /**
     * 收款公司名称
     */
    private String            companyName;

    /**
     * 收款银行名称
     */
    private String            bankName;

    /**
     * 收款行国别
     */
    private String            bankCountryCode;

    /**
     * 收款行地址
     */
    private String            bankAddress;

    /**
     * swift code
     */
    private String            swiftCode;

    /**
     * 大额行号
     */
    private String            cnapsCode;

    /**
     * bic
     */
    private String            bic;

    /**
     * iban
     */
    private String            iban;
    /**
     * 用户在商户下的账户
     */
    private String            account;

    /**
     * 所属商户号下的用户账号
     */
    private String            userIdIn3rdSys;
    /**
     * 账户类型(c:个人、b企业)
     */
    private String            bankAccountType;
    
    private String[] orderArray;
    

    private List<String> idList;

下面是get set方法就不贴出来了,

<typeAlias type="com.lianpay.lcpay.cb.exchangeorderserver.share.domain.CbExchangeOrderArr"
        alias="CbExchangeOrderArr" />

    <resultMap id="CbExchangeOrderArr" class="CbExchangeOrderArr">
        <result column="ID" property="id" jdbcType="DECIMAL" />  
        <result column="ORDER_ID_IN3RD_SYS" property="orderIdIn3rdSys"
            jdbcType="VARCHAR" />
        <result column="PAYEE_INFO_ID" property="payerInfoId" jdbcType="DECIMAL" />
        
        <result column="SOURCE_CURRENCY" property="sourceCurrency"
            jdbcType="VARCHAR" />
        <result column="SOURCE_AMOUNT" property="sourceAmount"
            jdbcType="DECIMAL" />
        <result column="EXCHANGE_RATE" property="exchangeRate"
            jdbcType="VARCHAR" />
        <result column="PAYER_ID" property="payeeId" jdbcType="DECIMAL" />
        <result column="TARGET_CURRENCY" property="targetCurrency"
            jdbcType="VARCHAR" />
        <result column="TARGET_AMOUNT" property="targetAmount"
            jdbcType="DECIMAL" />
        <result column="MCC_CODE" property="mccCode" jdbcType="VARCHAR" />
        <result column="NAME" property="name" jdbcType="VARCHAR" />
        <result column="COUNTRY_CODE" property="countryCode" jdbcType="VARCHAR" />
        <result column="BANK_ACCOUNT_TYPE" property="bankAccountType" jdbcType="VARCHAR" />
        <result column="id_type" property="idType" jdbcType="VARCHAR" />
        <result column="id_number" property="idNumber" jdbcType="VARCHAR" />
        <result column="address" property="address" jdbcType="VARCHAR" />
        <result column="company_name" property="companyName" jdbcType="VARCHAR" />
        <result column="bank_name" property="bankName" jdbcType="VARCHAR" />
        <result column="bank_account" property="bankAccount" jdbcType="VARCHAR" />
        <result column="bank_country_code" property="bankCountryCode" jdbcType="VARCHAR" />
        <result column="swift_code" property="swiftCode" jdbcType="VARCHAR" />
        <result column="cnaps_code" property="cnapsCode" jdbcType="VARCHAR" />
        <result column="bic" property="bic" jdbcType="VARCHAR" />
        <result column="iban" property="iban" jdbcType="VARCHAR" />
    </resultMap>
    <select id="listByPrimary3rdOrderId" resultMap="CbExchangeOrderArr"
        parameterClass="CbExchangeOrderArr">
        select
        EX.ID as ID,EX.ORDER_ID_IN3RD_SYS as ORDER_ID_IN3RD_SYS,EX.PAYER_ID as PAYER_ID ,
        EX.SOURCE_CURRENCY as SOURCE_CURRENCY,EX.SOURCE_AMOUNT as SOURCE_AMOUNT,EX.EXCHANGE_RATE as EXCHANGE_RATE,
        EX.PAYEE_INFO_ID as PAYEE_INFO_ID,EX.TARGET_CURRENCY as TARGET_CURRENCY ,EX.TARGET_AMOUNT as TARGET_AMOUNT,
        EX.MCC_CODE as MCC_CODE
        ,PEE.NAME as NAME,PEE.COUNTRY_CODE as COUNTRY_CODE,PEE.BANK_ACCOUNT_TYPE as BANK_ACCOUNT_TYPE,
        PEE.id_type as id_type,PEE.id_number as id_number,PEE.address as address,PEE.company_name as company_name,
        PEE.bank_name as bank_name,PEE.bank_account as bank_account,PEE.bank_country_code as bank_country_code,
        PEE.swift_code as swift_code,PEE.cnaps_code as cnaps_code,PEE.bic as bic, PEE.iban as iban
        from
        cb_exchange_order   EX left join cb_payee_info    PEE  on (EX.payee_info_id=PEE.id)
        where  
          EX.PAYER_ID=#payerId:DECIMAL#
        and EX.STATUS=#status:VARCHAR#
        and EX.ORDER_ID_IN3RD_SYS  in  
        <iterate property="idList" open="(" close=")" conjunction=",">  
          <![CDATA[#idList[]#]]>
        </iterate>  
    </select>


本人感觉还是挺笨的方法,还在改进中,上面的实体类原本为两个实体类,把他们合并成一个实体类来处理的


欢迎关注公众号:Java后端技术全栈