亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

mybatis單筆批量保存實體數據的方法

2024-07-13 10:16:57
字體:
來源:轉載
供稿:網友

這一篇主要介紹,如何保存實體數據。具體內容如下所示;

一,xml樣例

<?xml version="1.0" encoding="GBK"?><!-- 1..1 --><cisReports batNo="查詢批次號" unitName="查詢單位名稱" subOrgan="分支機構名稱" queryUserID="查詢操作員登錄名" queryCount="查詢請求數量" receiveTime="查詢申請時間,格式YYYYMMDD HH24:mm:ss">  <!-- 以下為每個查詢申請的查詢結果 1..n -->  <cisReport reportID="報告編號" buildEndTime="報告生成結束時間,格式YYYY-MM-DD HH24:mm:ss" queryReasonID="查詢原因ID,詳見數據字典" subReportTypes="查詢的收費子報告ID,多個收費子報告ID用逗號分隔" treatResult="對應的收費子報告收費次數,與subReportTypes一一對應,為大于等于0的值的集合,用逗號分隔"    subReportTypesShortCaption="查詢的收費子報告中文名稱 " refID="引用ID,為查詢申請條件中的引用ID" hasSystemError="有否系統錯誤,true:有錯誤,false:無錯誤"   isFrozen="該客戶是否被凍結,true:被凍結,false:未被凍結">    <!-- 1查詢條件信息 1..1 -->    <queryConditions>      <!-- 1..n -->      <item>        <name>查詢條件英文名稱</name>        <caption>查詢條件中文名稱</caption>        <value>查詢條件值</value>      </item>    </queryConditions>    <!--2身份認證 1..1 -->    <policeCheckInfo subReportType="10602" subReportTypeCost="96040" treatResult="子報告查詢狀態,1:查得,2:未查得,3:其他原因未查得" treatErrorCode ="treatResult=3時的錯誤代碼,詳見數據字典,treatResult!=3時,該屬性不存在" errorMessage="treatResult=3時的錯誤描述信息,treatResult!=3時,該屬性的值為空">        <item>                    <name>被查詢者姓名</name>          <documentNo>被查詢者證件號碼</documentNo>          <!--1,一致 2,不一致 treatResult為3時為空-->          <result>身份認證結果,1,一致 2,不一致</result>        </item>    </policeCheckInfo>    <!-- 3個人手機號碼核查 1..1 -->    <mobileCheckInfo subReportType="13612" subReportTypeCost="96040" treatResult="子報告查詢狀態,1:查得,2:未查得,3:其他原因未查得" treatErrorCode="treatResult=3時的錯誤代碼,詳見數據字典,treatResult!=3時,該屬性不存在" errorMessage="treatResult=3時的錯誤描述信息,treatResult!=3時,該屬性的值為空">        <!--treatresult為2、3時沒有以下節點-->        <item>          <nameCheckResult>姓名核查結果,有:一致、基本一致、不一致、無法核查 </nameCheckResult>          <documentNoCheckResult>證件號碼核查結果,有:一致、不一致、無法核查 </documentNoCheckResult>          <phoneCheckResult>手機號碼核查結果:一致、無法核查 </phoneCheckResult>                    <areaInfo>號碼歸屬地</areaInfo>          <operator>運營商 1:中國電信 2:中國移動 3:中國聯通 </operator>        </item>    </mobileCheckInfo>    <!--4個人反欺詐風險綜述信息 1..1 -->    <personAntiSpoofingDescInfo subReportType="14225" subReportTypeCost="96040" treatResult="子報告查詢狀態,1:查得,2:未查得,3:其他原因未查得" treatErrorCode="treatResult=3時的錯誤代碼,詳見數據字典,treatsult!=3時,該屬性不存在" errorMessage="treatResult=3時的錯誤描述信息,treatResult!=3時,該屬性的值為空">      <!--treatresult為2時沒有以下節點-->      <!--      個人反欺詐綜述信息。如以下例子,可能為空,可能存在其中0條或n條,根據具體結果返回。      1、 反欺詐風險評分為100分,風險等級為高,建議拒絕。      2、 電信手機號碼131****1542使用不足1個月。      3、 命中羊毛黨名單。      4、 命中欺詐風險名單。      5、 命中高風險人員名單。      6、 存在7筆逾期的信貸記錄。      7、 存在40條個人風險概要信息。      8、 在近兩年被機構查詢過23次個人信息。            -->            <personAntiSpoofingDesc>個人反欺詐綜述信息</personAntiSpoofingDesc>    </personAntiSpoofingDescInfo>    <!--5個人反欺詐風險評分信息 1..1 -->    <personAntiSpoofingInfo subReportType="14224" subReportTypeCost="96040" treatResult="子報告查詢狀態,1:查得,2:未查得,3:其他原因未查得" treatErrorCode="treatResult=3時的錯誤代碼,詳見數據字典,treatResult!=3時,該屬性不存在" errorMessage="treatResult=3時的錯誤描述信息,treatResult!=3時,該屬性的值為空">      <!--treatresult為2、3時沒有以下節點-->      <riskScore>風險評分</riskScore>      <riskLevel>風險等級,取值:高,中度,低</riskLevel>      <suggest>風險建議,取值:建議拒絕,建議復核,建議通過</suggest>      <hitTypes>命中類型:高風險名單、個人風險信息、信貸逾期名單、被機構查詢信息、手機號碼狀態異常、手機號碼低網齡、羊毛黨名單、欺詐風險名單等等,可能為1個或多個</hitTypes>    </personAntiSpoofingInfo>    <!-- 6手機號碼狀態信息 1..1 -->    <mobileStatusInfo subReportType="13611" subReportTypeCost="96040" treatResult="子報告查詢狀態,1:查得,2:未查得,3:其他原因未查得" treatErrorCode="treatResult=3時的錯誤代碼,詳見數據字典,treatResult!=3時,該屬性不存在" errorMessage="treatResult=3時的錯誤描述信息,treatResult!=3時,該屬性的值為空">        <!--treatresult為2、3時沒有以下節點-->        <item>          <operator>運營商 1:中國電信 2:中國移動 3:中國聯通 </operator>          <areaInfo>手機號碼歸屬地 </areaInfo>          <phoneStatus>手機狀態 1:正常在用 2: 停機 3:未啟用 4:已銷號 5-其他 6:預銷號</phoneStatus>          <timeLength>手機號碼在網時長,如:在網時長不足1個月,1-2個月,3-6個月,7-12個月 </timeLength>          <cancelTime>號碼注銷時間</cancelTime>        </item>    </mobileStatusInfo>    <!--7是否命中羊毛黨名單 1..1-->    <econnoisserurInfo subReportType="14228" subReportTypeCost="96040" treatResult="子報告查詢狀態,1:查得,2:未查得,3:其他原因未查得" treatErrorCode="treatResult=3時的錯誤代碼,詳見數據字典,treatResult!=3時,該屬性不存在" errorMessage="treatResult=3時的錯誤描述信息,treatResult!=3時,該屬性的值為空">      <!--treatresult為2、3時沒有以下節點-->      <state>是否命中羊毛黨名單,取值:0/1,0表示未命中羊毛黨名單,1表示命中羊毛黨名單</state>    </econnoisserurInfo>    <!--8是否命中欺詐風險名單 1..1-->    <fraudRiskInfo subReportType="14229" subReportTypeCost="96040" treatResult="子報告查詢狀態,1:查得,2:未查得,3:其他原因未查得" treatErrorCode="treatResult=3時的錯誤代碼,詳見數據字典,treatResult!=3時,該屬性不存在" errorMessage="treatResult=3時的錯誤描述信息,treatResult!=3時,該屬性的值為空">      <!--treatresult為2、3時沒有以下節點-->      <state>是否命中欺詐風險名單,取值:0/1,0表示未命中欺詐風險名單,1表示命中欺詐風險名單</state>    </fraudRiskInfo>    <!--9是否命中高風險名單 1..1 -->    <personRiskAssess subReportType="14226" subReportTypeCost="96040" treatResult="子報告查詢狀態,1:查得,2:未查得,3:其他原因未查得" treatErrorCode="treatResult=3時的錯誤代碼,詳見數據字典,treatResult!=3時,該屬性不存在" errorMessage="treatResult=3時的錯誤描述信息,treatResult!=3時,該屬性的值為空">        <!--treatresult為2、3時沒有以下節點-->        <checkResult>是否命中高風險名單 1:是,2:否</checkResult>    </personRiskAssess>    <!-- 10網貸逾期信息 1..1 -->    <microNearlyThreeYearsOverdueInfo subReportType="13204" subReportTypeCost="96040" treatResult="子報告查詢狀態,1:查得,2:未查得,3:其他原因未查得" treatErrorCode="treatResult=3時的錯誤代碼,詳見數據字典,treatResult!=3時,該屬性不存在" errorMessage="treatResult=3時的錯誤描述信息,treatResult!=3時,該屬性的值為空">       <!--treatresult為2、3時沒有以下節點-->       <!--逾期匯總信息 0..1-->        <stat>          <overdueAmount>逾期本金,單位:以貸款基本信息的幣種為準</overdueAmount>          <overdueDays>逾期天數區間,取值區間:逾期1天(含)以上</overdueDays>          <overdueCount>逾期天數區間的總筆數</overdueCount>        </stat>        <!--0..1-->        <items>          <!--逾期概要信息 1..5 多個記錄-->          <item>            <overdueAmount>逾期本金,單位:以貸款基本信息的幣種為準</overdueAmount>            <overdueDays>逾期天數區間,取值區間:逾期1-6天,逾期7-29天,逾期30-59天,逾期60-89天,逾期90天(含)以上</overdueDays>            <overdueCount>逾期天數區間的筆數</overdueCount>          </item>        </items>    </microNearlyThreeYearsOverdueInfo>    <!-- 11風險信息 1..1 -->    <personRiskInfo subReportType="14227" subReportTypeCost="96040" treatResult="子報告查詢狀態,1:查得,2:未查得,3:其他原因未查得" treatErrorCode="treatResult=3時的錯誤代碼,詳見數據字典,treatResult!=3時,該屬性不存在" errorMessage="treatResult=3時的錯誤描述信息,treatResult!=3時,該屬性的值為空">      <!--treatresult為2、3時沒有以下節點-->      <!-- 匯總信息 0..1-->      <stat>        <totleCount>概要匯總條數</totleCount>        <alCount>司法案例信息條數</alCount>        <zxCount>司法執行信息條數</zxCount>        <sxCount>司法失信信息條數</sxCount>        <swCount>稅務行政執法信息條數</swCount>        <cqggCount>催欠公告信息條數</cqggCount>        <wdyqCount>網貸逾期信息條數</wdyqCount>      </stat>      <!-- 匯總信息 end-->      <!-- 概要信息 0..1-->      <summary>        <!-- 司法案例信息概要信息 0..1 -->        <als>          <!-- 司法案例信息概要信息內容 1..n -->          <item>            <recordId>記錄編號</recordId>            <bt>標題</bt>            <ajlx>案件類型</ajlx>            <sjnf>審結年份,格式:YYYY</sjnf>            <dsrlx>當事人類型</dsrlx>          </item>        </als>        <!-- 司法執行信息概要信息 0..1 -->        <zxs>          <!-- 司法執行信息概要信息內容 1..n -->          <item>            <recordId>記錄編號</recordId>            <bt>標題</bt>            <zxbd>執行標的,單位:以幣種為準</zxbd>            <larq>立案日期,格式YYYY-MM-DD</larq>          </item>        </zxs>        <!-- 司法失信信息概要信息 0..1 -->        <sxs>          <!-- 司法失信信息概要信息內容 1..n -->          <item>            <recordId>記錄編號</recordId>            <bt>標題</bt>            <larq>立案日期,格式YYYY-MM-DD</larq>            <fbrq>發布日期,格式YYYY-MM-DD</fbrq>          </item>        </sxs>        <!-- 稅務行政執法信息概要信息 0..1 -->        <sws>          <!-- 稅務行政執法信息概要信息內容 1..n -->          <item>            <recordId>記錄編號</recordId>            <bt>標題</bt>            <ggrq>公告日期,格式YYYY-MM-DD</ggrq>          </item>        </sws>        <!-- >催欠公告信息概要信息 0..1 -->        <cqs>          <!-- 催欠公告信息概要信息內容 1..n -->          <item>            <recordId>記錄編號</recordId>            <bt>標題</bt>            <fbrq>發布日期,格式YYYY-MM-DD</fbrq>          </item>        </cqs>        <!-- 網貸逾期信息概要信息 0..1 -->        <wdyqs>          <!-- 網貸逾期信息概要信息內容 1..n -->          <item>            <recordId>記錄編號</recordId>            <bt>標題</bt>            <fbrq>發布日期,格式YYYY-MM-DD</fbrq>          </item>        </wdyqs>      </summary>    </personRiskInfo>        <!--12個人近兩年歷史查詢記錄 1..1 -->    <historySimpleQueryInfo subReportType="19902" subReportTypeCost="96040" treatResult="子報告查詢狀態,1:查得,2:未查得,3:其他原因未查得" treatErrorCode="treatResult=3時的錯誤代碼,詳見數據字典,treatResult!=3時,該屬性不存在" errorMessage="treatResult=3時的錯誤描述信息,treatResult!=3時,該屬性的值為空">      <!--treatresult為2、3時沒有以下節點-->      <!--0..1-->      <items>        <!-- 1..n -->        <item>          <unitMember>單位類型名稱</unitMember>          <last1Month>近1個月查詢記錄數</last1Month>          <last3Month>近3個月查詢記錄數</last3Month>          <last6Month>近6個月查詢記錄數</last6Month>          <last12Month>近12個月查詢記錄數</last12Month>          <last18Month>近18月查詢記錄數</last18Month>          <last24Month>近24月查詢記錄數</last24Month>        </item>      </items>      <!--0..1-->      <count>        <last1Month>近1個月各單位類型查詢記錄總數</last1Month>        <last3Month>近3個月各單位類型查詢記錄總數</last3Month>        <last6Month>近6個月各單位類型查詢記錄總數</last6Month>        <last12Month>近12個月各單位類型查詢記錄總數</last12Month>        <last18Month>近18月各單位類型查詢記錄總數</last18Month>        <last24Month>近24月各單位類型查詢記錄總數</last24Month>            </count>    </historySimpleQueryInfo>  </cisReport></cisReports>

二,表結構設計

1,批次號:各表之間用最外層批次號關聯。

2,主表:即把各層字段全部存在一個表中。

三,實體設計

分為三層:CisReportRoot ,CisReportChild ,ReportElement

public class CisReportRoot extends BasePojo implements Serializable {  private String docId;  private String batNo;//查詢批次號  @JSONField(serialize = false)  private String xmlId;  private CisReportChild cisReportChild;/** * 2017/7/21. * 報告節點屬性以及子節點 */public class CisReportChild extends BasePojo {  /**   * 報告生成結束時間   **/  private String buildEndTime;  /**   * 是否有系統錯誤 true表示有 false表示沒有   **/  private String hasSystemError;  /**   * 該客戶是否被凍結   **/  private String isFrozen;  private ReportElement reportElement;public class ReportElement extends BasePojo {  private String phone;  private PoliceCheckInfo policeCheckInfo;//身份認證  private MobileCheckInfo mobileCheckInfo;//個人手機號碼核查  private PersonAntiSpoofingDescInfo personAntiSpoofingDescInfo;//個人反欺詐風險綜述信息  private PersonAntiSpoofingInfo personAntiSpoofingInfo;//個人反欺詐風險評分信息  private MobileStatusInfo mobileStatusInfo;//手機號碼狀態信息  private EconnoisserurInfo econnoisserurInfo;//是否命中羊毛黨名單  private FraudRiskInfo fraudRiskInfo;//是否命中欺詐風險名單  private PersonRiskAssess personRiskAssess;//是否命中高風險名單  private MicroNearlyThreeYearsOverdueInfo microNearlyThreeYearsOverdueInfo;//網貸逾期信息  private PersonRiskInfo personRiskInfo;//風險信息  private HistorySimpleQueryInfo historySimpleQueryInfo;//個人近兩年歷史查詢記錄

四,代碼

<1>單筆,批量無需主鍵

無論單筆還是批量都可以把數據存在map中,sql中通過map的鍵獲取數據。

如:

 private void savePersonRiskInfo(String batNo, PersonRiskInfo personRiskInfo) throws Exception {    Map<String, Object> map = new HashMap<>();    map.put("batNo", batNo);     //單筆    map.put("item", personRiskInfo);    pyMapper.savePersonRiskInfo(map);    if (!ListUtil.isEmpty(personRiskInfo.getAlList())) {       //批量      map.put("list", personRiskInfo.getAlList());      pyMapper.saveAlInfoList(map);    }

sql:

<!--個人風險記錄 -->   //單筆  <insert id="savePersonRiskInfo" parameterType="java.util.Map">    INSERT INTO TABLE_PERSON_RISK_INFO(BATNO,TOTLECOUNT,ALCOUNT,ZXCOUNT,SXCOUNT,SWCOUNT,CQGGCOUNT,WDYQCOUNT)    VALUES (#{batNo,jdbcType=VARCHAR},    #{item.totleCount,jdbcType=NUMERIC},    #{item.alCount,jdbcType=NUMERIC},#{item.zxCount,jdbcType=NUMERIC},#{item.sxCount,jdbcType=NUMERIC},    #{item.swCount,jdbcType=NUMERIC},#{item.cqggCount,jdbcType=NUMERIC},#{item.wdyqCount,jdbcType=NUMERIC})  </insert>  <!--逾期詳細記錄 -->   //批量  <insert id="saveMicroNearlyThreeYearsOverdueInfoList" parameterType="java.util.Map">    INSERT INTO TABLE_MNTYOI (BATNO,OVERDUEAMOUNT,OVERDUEDAYS,OVERDUECOUNT)    <foreach collection="list" item="item" separator="union all">      (      SELECT #{batNo,jdbcType=VARCHAR},      #{item.overdueAmount,jdbcType=VARCHAR},      #{item.overdueDays,jdbcType=VARCHAR},      #{item.overdueCount,jdbcType=NUMERIC}      FROM DUAL      )    </foreach>  </insert> private CisReportRoot invokePy(PyQueryBean pyQueryBean) throws Exception {    pyQueryBean.setQueryFromPy(QUERY_FROM_PY);    //call py service    CisReportRoot cisReportRoot = queryCisReportFromPyServer(pyQueryBean);    cisReportRoot.getCisReportChild().getReportElement().setPhone(pyQueryBean.getPhone());    //cacheService.save(cisReportRoot);     //(1)保存數據    saveCisReport(cisReportRoot);    return cisReportRoot;  }

(1)保存數據

 @Transactional(rollbackFor = Exception.class)  @Override  public CisReportRoot saveCisReport(CisReportRoot cisReportRoot) throws Exception {    try {      ReportElement reportElement = cisReportRoot.getCisReportChild().getReportElement();      PersonRiskInfo personRiskInfo = reportElement.getPersonRiskInfo();      //(2)主表,保存xml所有節點信息(不包含個人風險信息),保存單筆數據      pyMapper.saveCisReport(cisReportRoot);      if (SUCCESS.equals(cisReportRoot.getCisReportChild().getReportElement().getPersonRiskInfo().getTreatResult())) {        savePersonRiskInfo(cisReportRoot.getBatNo(), personRiskInfo);      }      if (cisReportRoot.getCisReportChild().getReportElement().getHistorySimpleQueryInfo().getTreatResult().equals(SUCCESS)) {        Map<String, Object> map = new HashMap<>();          //(3)保存批量數據        map.put("batNo", cisReportRoot.getBatNo());        if (!ListUtil.isEmpty(cisReportRoot.getCisReportChild().getReportElement().getHistorySimpleQueryInfo().getItemList())) {          map.put("list", cisReportRoot.getCisReportChild().getReportElement().getHistorySimpleQueryInfo().getItemList());          pyMapper.saveHistorySimpleQueryInfoList(map);        }        if (!ListUtil.isEmpty(cisReportRoot.getCisReportChild().getReportElement().getMicroNearlyThreeYearsOverdueInfo().getList())) {          map.put("list", cisReportRoot.getCisReportChild().getReportElement().getMicroNearlyThreeYearsOverdueInfo().getList());          pyMapper.saveMicroNearlyThreeYearsOverdueInfoList(map);        }      }      return cisReportRoot;    } catch (Exception e) {      logger.error("saveCisReport@PyserviceImpl_Exception", e);      throw e;    }  }

(2)保存主表

<insert id="saveCisReport" parameterType="java.util.Map">    INSERT INTO TABLE_CISREPORT    (BATNO,BUILDENDTIME,ISFROZEN,    MCI_NAMECHECKRESULT,MCI_AREAINFO,MCI_DOCUMENTNOCHECKRESULT,MCI_OPERATOR,MCI_PHONECHECKRESULT,    PCI_DOCUMENTNO,PCI_NAME,PCI_RESULT,    PASDI_DESC,    PASI_HITTYPES,PASI_RISKLEVEL,PASI_RISKSCORE,PASI_RISKSUGGEST,    MS_AREAINFO,MS_CAnCELTIME,MS_OPERATOR,MS_PHONESTATUS,MS_TIMELENGTH,    ECONNOISSERUR,    FRAUDRISK,    PRA_CHECKRESULT,    MNTYOI_OVERDUEAMOUNT,MNTYOI_OVERDUECOUNT,MNTYOI_OVERDUEDAYS,    HS_LAST1MONTH,HS_LAST3MONTH,HS_LAST6MONTH,HS_LAST12MONTH,HS_LAST18MONTH,HS_LAST24MONTH,    PHONE,XMLID)    VALUES    (#{batNo,jdbcType=VARCHAR},    to_date(#{cisReportChild.buildEndTime},'yyyy-MM-dd hh24:mi:ss'),    #{cisReportChild.isFrozen,jdbcType=VARCHAR},    #{cisReportChild.reportElement.mobileCheckInfo.nameCheckResult,jdbcType=VARCHAR},    #{cisReportChild.reportElement.mobileCheckInfo.areaInfo,jdbcType=VARCHAR},    #{cisReportChild.reportElement.mobileCheckInfo.documentNoCheckResult,jdbcType=VARCHAR},    #{cisReportChild.reportElement.mobileCheckInfo.operator,jdbcType=NUMERIC},    #{cisReportChild.reportElement.mobileCheckInfo.phoneCheckResult,jdbcType=VARCHAR},    #{cisReportChild.reportElement.policeCheckInfo.documentNo,jdbcType=VARCHAR},    #{cisReportChild.reportElement.policeCheckInfo.name,jdbcType=VARCHAR},    #{cisReportChild.reportElement.policeCheckInfo.result,jdbcType=NUMERIC},    #{cisReportChild.reportElement.personAntiSpoofingDescInfo.personAntiSpoofingDesc,jdbcType=VARCHAR},    #{cisReportChild.reportElement.personAntiSpoofingInfo.hitTypes,jdbcType=VARCHAR},    #{cisReportChild.reportElement.personAntiSpoofingInfo.riskLevel,jdbcType=VARCHAR},    #{cisReportChild.reportElement.personAntiSpoofingInfo.riskScore,jdbcType=VARCHAR},    #{cisReportChild.reportElement.personAntiSpoofingInfo.suggest,jdbcType=VARCHAR},    #{cisReportChild.reportElement.mobileStatusInfo.areaInfo,jdbcType=VARCHAR},    #{cisReportChild.reportElement.mobileStatusInfo.cancelTime,jdbcType=VARCHAR},    #{cisReportChild.reportElement.mobileStatusInfo.operator,jdbcType=NUMERIC},    #{cisReportChild.reportElement.mobileStatusInfo.phoneStatus,jdbcType=NUMERIC},    #{cisReportChild.reportElement.mobileStatusInfo.timeLength,jdbcType=VARCHAR},    #{cisReportChild.reportElement.econnoisserurInfo.state,jdbcType=NUMERIC},    #{cisReportChild.reportElement.fraudRiskInfo.state,jdbcType=NUMERIC},    #{cisReportChild.reportElement.personRiskAssess.checkResult,jdbcType=NUMERIC},    #{cisReportChild.reportElement.microNearlyThreeYearsOverdueInfo.overdueAmount,jdbcType=VARCHAR},    #{cisReportChild.reportElement.microNearlyThreeYearsOverdueInfo.overdueCount,jdbcType=NUMERIC},    #{cisReportChild.reportElement.microNearlyThreeYearsOverdueInfo.overdueDays,jdbcType=VARCHAR},    #{cisReportChild.reportElement.historySimpleQueryInfo.totalCount.last1Month,jdbcType=NUMERIC},    #{cisReportChild.reportElement.historySimpleQueryInfo.totalCount.last3Month,jdbcType=NUMERIC},    #{cisReportChild.reportElement.historySimpleQueryInfo.totalCount.last6Month,jdbcType=NUMERIC},    #{cisReportChild.reportElement.historySimpleQueryInfo.totalCount.last12Month,jdbcType=NUMERIC},    #{cisReportChild.reportElement.historySimpleQueryInfo.totalCount.last18Month,jdbcType=NUMERIC},    #{cisReportChild.reportElement.historySimpleQueryInfo.totalCount.last24Month,jdbcType=NUMERIC},    #{cisReportChild.reportElement.phone,jdbcType=VARCHAR},    #{xmlId,jdbcType=VARCHAR}    )

(3)保存批量數據(不自動生成主鍵)

<!--個人近兩年歷史查詢記錄 -->  <insert id="saveHistorySimpleQueryInfoList" parameterType="java.util.Map">    INSERT INTO    TABLE_HISTORY_SIMPLE_QUERY    (BATNO,UNIT_MEMBER,LAST1MONTH,LAST3MONTH,LAST6MONTH,LAST12MONTH,LAST18MONTH,LAST24MONTH)    <foreach collection="list" item="item" separator="union all">      (      SELECT      #{batNo,jdbcType=VARCHAR},      #{item.unitMember,jdbcType=VARCHAR},      #{item.last1Month,jdbcType=NUMERIC},#{item.last3Month,jdbcType=NUMERIC},      #{item.last6Month,jdbcType=NUMERIC},#{item.last12Month,jdbcType=NUMERIC},      #{item.last18Month,jdbcType=NUMERIC},#{item.last24Month,jdbcType=NUMERIC}      FROM DUAL      )    </foreach>  </insert>

<2>單筆,批量需要插入主鍵

單筆含主鍵

  DataServiceDetailResult dataServiceDetailResult = tdService.getDataServiceDetailResult(tdReportRoot);    int n = tdDataServiceMapper.insertDataServiceDetailResult(dataServiceDetailResult); <!--信息核驗接口-->  <!--DATASERVICE-->  <insert id="insertDataServiceDetailResult" parameterType="DataServiceDetailResult">    <selectKey keyProperty="id" resultType="BigDecimal" order="BEFORE">      select SEQ_ICS_TD_DATASERVICE.nextval as id from dual    </selectKey>    insert into ICS_TD_DATASERVICE (ID, RECORDID, REASON_DESC, REASON_CODE,    SUCCESS)    values (#{id,jdbcType=DECIMAL}, #{recordId,jdbcType=DECIMAL}, #{reasonDesc,jdbcType=VARCHAR},    #{reasonCode,jdbcType=VARCHAR},    #{success,jdbcType=DECIMAL})  </insert>

批量保存包含主鍵

 if (!ListUtil.isEmpty(interfacesList)) {      map.put("recordId", id);      map.put("list", interfacesList);      tdDataServiceMapper.addBatchInterfaces(map);    }

sql: 

<!--批量保存interfaces-->  <insert id="addBatchInterfaces" parameterType="java.util.List">    <!--    注釋為mysql插入方式,可以插入但是導致數據回滾不了    下面為oracle插入方式:注意parameterType:java.util.List或java.util.Map都可以    BEGIN    <foreach collection="list" item="item" index="index" separator="">      INSERT INTO ICS_TD_INTERFACES(ID, RECORDID, TYPE)      VALUES      (      BLOANCRDTDATA.SEQ_ICS_TD_INTERFACES.nextval,      #{recordId,jdbcType=DECIMAL},      #{item.type,jdbcType=VARCHAR}      );    </foreach>    COMMIT;    END;-->    insert into ICS_TD_INTERFACES (ID,RECORDID, TYPE)    SELECT SEQ_ICS_TD_INTERFACES.nextval ID, A.*    FROM(    <foreach collection="list" item="item" index="index" separator="union all">      SELECT      #{recordId,jdbcType=DECIMAL},      #{item.type,jdbcType=VARCHAR}      FROM DUAL    </foreach>    ) A  </insert>

總結

以上所述是小編給大家介紹的mybatis單筆批量保存實體數據的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美成人三级视频网站| 成人免费激情视频| 欧美极品少妇xxxxⅹ喷水| 欧美视频13p| 中文字幕av一区| 97福利一区二区| 色综合天天综合网国产成人网| 国产精品美女免费| 亚洲色图欧美制服丝袜另类第一页| 久久精品最新地址| 国产亚洲一区精品| 日韩在线中文视频| 欧美影院久久久| 97超级碰碰碰| 日韩精品中文字幕久久臀| 精品丝袜一区二区三区| 国产精品v日韩精品| 色一情一乱一区二区| 在线观看国产欧美| 欧美午夜精品久久久久久浪潮| 亚洲第一在线视频| 久久久精品美女| 国产精品女视频| 亚洲а∨天堂久久精品9966| 91爱视频在线| 91精品视频在线播放| 欧美综合一区第一页| xxxxx91麻豆| 姬川优奈aav一区二区| 国产精品一区二区三区毛片淫片| 九九热最新视频//这里只有精品| 91网站在线免费观看| 日韩在线观看免费高清完整版| 国产精品福利久久久| 欧美超级免费视 在线| 7777精品久久久久久| 国产精品99久久久久久www| 国产亚洲精品综合一区91| 亚洲韩国青草视频| 日韩风俗一区 二区| 欧美激情2020午夜免费观看| xvideos亚洲人网站| 国产日韩欧美一二三区| 在线视频一区二区| 蜜月aⅴ免费一区二区三区| 亚洲天堂免费视频| 欧美高清视频一区二区| 红桃av永久久久| 成人妇女免费播放久久久| 亚洲欧美一区二区激情| 午夜精品视频网站| 国产成人精品a视频一区www| 日韩在线精品视频| 亚洲女人天堂色在线7777| 国产成人精品日本亚洲专区61| 亚洲国产成人精品女人久久久| 久久精品91久久香蕉加勒比| 一本色道久久综合亚洲精品小说| 91欧美精品午夜性色福利在线| 亚洲有声小说3d| 成人精品一区二区三区电影免费| 欧美猛交免费看| 狠狠色狠色综合曰曰| 亚洲欧洲视频在线| 日韩男女性生活视频| 精品国产依人香蕉在线精品| 国产精品狼人色视频一区| 欧美精品videosex牲欧美| 91在线视频导航| 久久久国产精彩视频美女艺术照福利| 国产精品h片在线播放| 久久夜精品香蕉| 亚洲成成品网站| 日韩免费视频在线观看| 亚洲bt欧美bt日本bt| 久久99精品视频一区97| 最好看的2019的中文字幕视频| 亚洲人成77777在线观看网| 国产精品男人的天堂| 亚洲人成网站色ww在线| 欧美视频在线免费| 欧美在线精品免播放器视频| 粗暴蹂躏中文一区二区三区| 亚洲精品久久久久久久久久久久久| 欧美激情亚洲视频| 日本欧美黄网站| 久久久久国产精品一区| 午夜精品福利电影| 日本老师69xxx| 欧美大全免费观看电视剧大泉洋| 亚洲成人黄色在线| 在线播放亚洲激情| 2018中文字幕一区二区三区| 97在线视频免费看| 7777精品久久久久久| 亚洲少妇激情视频| 亚洲欧美日韩中文在线| 国产91露脸中文字幕在线| 色综合久久久888| 国内精品在线一区| 成人黄色中文字幕| 成人写真视频福利网| 在线免费观看羞羞视频一区二区| 亚洲偷熟乱区亚洲香蕉av| 欧美日韩国产一区中文午夜| 日韩精品在线免费观看视频| 日本久久久久久| 在线观看精品自拍私拍| 国产精品永久免费视频| 九九久久精品一区| 国产日韩在线观看av| 1769国产精品| 精品女厕一区二区三区| 欧美性猛交xxxx偷拍洗澡| 国产精品中文字幕在线观看| 亚洲香蕉av在线一区二区三区| 日韩a**站在线观看| 成人国产精品一区二区| 亚洲va久久久噜噜噜| 国外成人免费在线播放| 国产精品27p| 81精品国产乱码久久久久久| 成人情趣片在线观看免费| 亚洲影院高清在线| 色偷偷91综合久久噜噜| 美日韩丰满少妇在线观看| 岛国精品视频在线播放| 亚洲欧美制服综合另类| 国产精品男人爽免费视频1| 亚洲91精品在线| 91精品国产色综合| 激情久久av一区av二区av三区| 亚洲理论电影网| 欧美成人自拍视频| 国产伊人精品在线| 欧美老女人性视频| 亚洲欧美国产一区二区三区| 不卡av电影在线观看| 欧美激情精品久久久久久久变态| 国产中文日韩欧美| 国产精品久久久久久久9999| 成人网中文字幕| 国产精品美女www爽爽爽视频| 精品视频久久久久久| 精品视频久久久| 精品国产一区二区三区久久久| 久久九九热免费视频| 国产精品老女人视频| 69**夜色精品国产69乱| 久久久久久久久久久网站| 日韩精品免费电影| 久久久精品国产一区二区| 色伦专区97中文字幕| 国产精品成人久久久久| 亚洲欧美资源在线| 日韩**中文字幕毛片| 在线观看不卡av| 欧美日本亚洲视频| 亚洲91精品在线观看| 亚洲综合自拍一区| 亚洲欧美一区二区精品久久久| 欧美激情一区二区久久久| 91精品视频在线看| 日韩av在线天堂网|