第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

【jdbcTemplate】批量插入異常捕獲

【jdbcTemplate】批量插入異常捕獲

呼啦一陣風(fēng) 2019-04-24 18:19:42
在使用jdbctemplate的批量操作的時(shí)候調(diào)用jdbcTemplate.batchUpdate,他的原理機(jī)制是,集合一定數(shù)量的sql,一起發(fā)送到數(shù)據(jù)庫(kù),這樣減少與數(shù)據(jù)庫(kù)頻繁交互的成本但現(xiàn)在有一個(gè)問(wèn)題就是,我這有50條sql,批量插入,然后有一條有問(wèn)題,我如何讓這一條執(zhí)行失敗時(shí),不影響其余49條語(yǔ)句的執(zhí)行呢?下面是我自己封裝的一個(gè)方法批量插入這個(gè)list到數(shù)據(jù)庫(kù)去,如果出現(xiàn)什么值太大,違反唯一性約束什么之類的異常,我的那個(gè)catch根本就捕獲不住,我最多只能知道這個(gè)list插入有問(wèn)題,沒法實(shí)現(xiàn)list中一條記錄有問(wèn)題,不影響其他記錄的執(zhí)行public void insert(final List<?> lists) {// 獲取insert語(yǔ)句 eg:sql = insert into user (id,name,age) values (?,?,?)String sql = SqlUtils.getInsertSql(lists.get(0));jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {@Overridepublic void setValues(PreparedStatement ps, int i) {Object value = lists.get(i);// objects = 獲取代替?的具體值Object[] objects = SqlUtils.getValues(value);for (int k = 0; k < objects.length; k++) {try {ps.setObject(k + 1, objects[k]);} catch (SQLException e) {log.error("數(shù)據(jù)庫(kù)異常 -- "+value.getClass().getSimpleName(),e);}}}    @Override     public int getBatchSize() {         return lists.size();     } });}
查看完整描述

3 回答

?
弒天下

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超8個(gè)贊

如果想批量,就要一起commit,一起回滾事物,
否則如果你想記錄記錄哪條數(shù)據(jù)有問(wèn)題,
那就不要批量,一條一條提交,
碰到有問(wèn)題的trycatch去捕獲他,
定義一個(gè)字符串記錄一下,然后再繼續(xù)提交,
如果再次碰到有問(wèn)題的,然后在追加字符串,
最終返回字符串,
如果是空的,代表全部成功,
否則就查詢字符串里面記錄的信息,就知道哪條失敗了


查看完整回答
反對(duì) 回復(fù) 2019-05-06
?
夢(mèng)里花落0921

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超6個(gè)贊

做不到,JDBC batch 操作是批量提交的


查看完整回答
反對(duì) 回復(fù) 2019-05-06
?
呼如林

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超3個(gè)贊

批量么,肯定是要么全commit,要么全rollback。
你既然用了batchUpdate,batchInsert,那你肯定得確保你的批量sql都沒有問(wèn)題。
神馬主鍵約束啊,你設(shè)計(jì)的數(shù)據(jù)庫(kù)不會(huì)考慮到這些問(wèn)題么,如果不用主鍵自增長(zhǎng),那你頁(yè)面表單就得ajax判斷數(shù)據(jù)庫(kù)是不是已經(jīng)存在了!
長(zhǎng)度神馬的都是客戶端上該處理的問(wèn)題,你這些驗(yàn)證控制自己不做好,數(shù)據(jù)庫(kù)再牛板也幫不了你啊

查看完整回答
反對(duì) 回復(fù) 2019-05-06
  • 3 回答
  • 0 關(guān)注
  • 1697 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)