最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解決sharding JDBC 不支持批量導入問題

 更新時間:2021年10月29日 14:52:42   作者:我&菜鳥  
這篇文章主要介紹了解決sharding JDBC 不支持批量導入問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

sharding JDBC 不支持批量導入

package com.ydmes.service.impl.log;
import com.ydmes.domain.entity.log.BarTraceBackLog;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.stereotype.Component;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.DefaultTransactionDefinition;
import java.util.List;
@Component
public class BarTraceBackLogBatchServiceImpl implements ApplicationContextAware {
private static ApplicationContext applicationContext;
public void batchInsertBarTraceBackLogs(List<BarTraceBackLog> barTraceBackLogs) {
DefaultTransactionDefinition definition = new DefaultTransactionDefinition();
definition.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
definition.setIsolationLevel(TransactionDefinition.ISOLATION_READ_COMMITTED);
DataSourceTransactionManager transactionManager = (DataSourceTransactionManager)
applicationContext.getBean("shardingTransactitonManager");
TransactionStatus transactionStatus = transactionManager.getTransaction(definition);
for (BarTraceBackLog barTraceBackLog : barTraceBackLogs) {
//UserDao有create方法,單條插入
applicationContext.getBean(BarTraceBackLogServiceImpl.class).insertSelective(barTraceBackLog);
}
transactionManager.commit(transactionStatus);
}
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.applicationContext = applicationContext;
}
}

sharding-jdbc不支持多條sql語句批量更新

今天項目有個刷數據的需求,單條數據修改太慢,想著寫個批量update,三兩下把sql寫好了,發(fā)現分表不支持,sharding-jdbc只會把我第一個表名填充成正確表名,后面的表名都沒有修改。

mybastis如下:

<update id="batchUpdate" >
<foreach collection="userList" item="item" index="index" separator=";">
update t_user_data set `province_id`=#{item.provinceId} where member_id = #{item.memberId}
</foreach>
</update>

sql如下:

update t_user_data_1 set `province_id`=?,`region_id`=? where member_id = ? ;
update t_user_data set `province_id`=?,`region_id`=? where member_id = ? ;

由此可見,這多條sql語句更新是不支持的。

修改思路

既然表名不支持自動多個,那我就自己替換表名,

先在代碼中根據表的分表規(guī)則得到表名,在賦值在每個sql語句上

代碼如下:

userData1.setTableName("t_user_data_" + userData.getMemberId() % 8);

比如我這張表分了八個表,則按8取余這樣每個條數據都對應好了表名,

mybastis如下:

<update id="batchUpdate" >
<foreach collection="userList" item="item" index="index" separator=";">
update ${item.tableName} set `province_id`=#{item.provinceId} where member_id = #{item.memberId}
</foreach>
</update>

這里需要注意一下:表名和列名需要用${}來傳入,參數才用#{}。

最終sql如下:

update t_user_data_1 set `province_id`=?,`region_id`=? where member_id = ? ;
update t_user_data_2 set `province_id`=?,`region_id`=? where member_id = ? ;

這樣便解決了批量更新問題。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • SpringSecurity Oauth2訪問令牌續(xù)期問題

    SpringSecurity Oauth2訪問令牌續(xù)期問題

    這篇文章主要介紹了SpringSecurity Oauth2訪問令牌續(xù)期問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • idea如何開啟菜單欄

    idea如何開啟菜單欄

    文章介紹了如何通過修改IntelliJ IDEA的樣式文件`ui.lnf.xml`來重新顯示被關閉的菜單欄,并分享了解決問題的步驟
    2025-01-01
  • nacos(SpringCloud)配置加載過程

    nacos(SpringCloud)配置加載過程

    Nacos是Spring Cloud的配置中心,通過BootstrapApplicationListener和ConfigFileApplicationListener監(jiān)聽器加載配置文件,并通過PropertySourceBootstrapConfiguration將Nacos配置加載到Spring Boot應用的environment中
    2024-12-12
  • Java繪圖庫JFreeChart的使用教程

    Java繪圖庫JFreeChart的使用教程

    圖表是一種以簡單方式顯示信息的圖形,JFreeChart允許創(chuàng)建各種交互式和非交互式圖表,本文主要介紹了Java繪圖庫JFreeChart的使用教程,感興趣的可以了解一下
    2023-09-09
  • springboot高并發(fā)下提高吞吐量的實現

    springboot高并發(fā)下提高吞吐量的實現

    這篇文章主要介紹了springboot高并發(fā)下提高吞吐量的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-11-11
  • spring aop兩種配置方式

    spring aop兩種配置方式

    這篇文章主要為大家詳細介紹了spring aop兩種配置方式,主要是注解配置AOP和xml配置aop,需要的朋友可以參考下
    2015-09-09
  • SpringBoot log打印及輸出方式

    SpringBoot log打印及輸出方式

    這篇文章主要介紹了SpringBoot log打印及輸出方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • java報錯之springboot3+vue2項目web服務層報錯總結

    java報錯之springboot3+vue2項目web服務層報錯總結

    java入門學習,隨手記錄一下開發(fā)過程中產生的報錯,有些錯誤是網上搜索再加上自己嘗試,隨手引用了一些其他人的記錄,也是留給自己看的,或是希望能對其他初學者有幫助

    2023-06-06
  • Springboot整合RabbitMQ消息中間件的使用

    Springboot整合RabbitMQ消息中間件的使用

    在沒有特別要求的情況下,通常會選擇RabbitMQ作為消息中間件,本文主要介紹了Springboot整合RabbitMQ消息中間件的使用,具有一定的參考價值,感興趣的可以了解一下
    2023-11-11
  • Spring中@Repository注解的作用和用法以及和@Mapper的區(qū)別詳析

    Spring中@Repository注解的作用和用法以及和@Mapper的區(qū)別詳析

    這篇文章主要給大家介紹了關于Spring中@Repository注解的作用和用法以及和@Mapper的區(qū)別的相關資料,注解的作用是標識一個類為數據訪問對象,并由Spring框架進行實例化和管理,需要的朋友可以參考下
    2023-09-09

最新評論

义马市| 巴东县| 武定县| 尚义县| 雷山县| 靖远县| 方城县| 临澧县| 交城县| 康平县| 黄骅市| 沿河| 张北县| 碌曲县| 牡丹江市| 盐亭县| 陆良县| 辽阳市| 峨山| 陆河县| 洛南县| 当雄县| 富顺县| 邓州市| 秀山| 平邑县| 长岛县| 宁乡县| 莱西市| 伊春市| 海原县| 邵阳县| 潜江市| 瑞昌市| 平定县| 岳阳市| 合山市| 九寨沟县| 林口县| 德化县| 青阳县|