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

java實現(xiàn)對兩張表進行數(shù)據(jù)同步

 更新時間:2026年05月17日 10:17:52   作者:臥槽甜  
文章描述了在Java中使用SQL Server的MERGE語句實現(xiàn)兩張表的同步操作,適用于主表查詢、附表增刪改的場景,MERGE語句可以同時執(zhí)行插入和更新操作,適用于Oracle和SQL Server,但不適用于MySQL和PostgreSQL,可通過自定義注解實現(xiàn)接口調用后的同步操作

java對sqlserver兩張表進行同步操作

功能描述

在大型項目中,我們經常會用到讀寫分離技術來進行優(yōu)化,及一張主表僅用來查詢。

一張附表用來增刪改。我們現(xiàn)在要做的功能就是當附表數(shù)據(jù)變動后,要同步更新主表。

這里使用的就是sqlserver的 MERGE 來進行操作。該關鍵詞就是合并Updateinsert使用,直接上代碼

sql語句

MERGE A表 AS a 
USING ( SELECT x.id, x.field_2, x.field_3,x.field_4 FROM B表 x )//查詢有用的字段
AS b
 ON a.id= b.id  //匹配條件
WHEN MATCHED THEN //當匹配時執(zhí)行update
UPDATE 
	SET a.field_2 = b.field_2
WHEN NOT MATCHED  THEN  //當不匹配時執(zhí)行insert
	INSERT (id,field_2,field_3,field_4) VALUES (b.id,b.field_2,b.field_3,b.field_4);

java代碼

@Aspect
@Component
public class LogAspect {

    private static final Logger logger = LoggerFactory.getLogger(LogAspect.class);


    @Pointcut("@annotation(com.xxx.annotation.MyAction)")//注解路徑
    public void annotationPointCat() {
    }


    @Resource
    JdbcTemplate jdbcTemplate;


    @AfterReturning(pointcut = "annotationPointCat()")
    public void afterRunning() {
        System.out.println("方法執(zhí)行完執(zhí)行...afterRunning");
        logger.info("Buffer更新成功");
        logger.info("準備同步至Detail表");
        logger.info("開始");
        String sql = "MERGE A表 AS a 
USING ( SELECT x.id, x.field_2, x.field_3,x.field_4 FROM B表 x )//查詢有用的字段
AS b
 ON a.id= b.id  //匹配條件
WHEN MATCHED THEN //當匹配時執(zhí)行update
UPDATE 
	SET a.field_2 = b.field_2
WHEN NOT MATCHED  THEN  //當不匹配時執(zhí)行insert
	INSERT (id,field_2,field_3,field_4) VALUES (b.id,b.field_2,b.field_3,b.field_4);";
        jdbcTemplate.execute(sql);
        logger.info("同步完成");
        System.out.println("finish");

    }

}

這里也可以使用 Statement來執(zhí)行sql,但是對于這條語句會返回受影響行數(shù),statement會拋異常??梢栽趕ql語句上加上 就可。

SET NOCOUNT ON

我們這個功能寫的是在這個增刪改的接口上標注我們自定義的注解。然后就會在方法返回之后執(zhí)行我們這步同步的操作

MERGE目前適用于 Orcale sqlserver,不適用mysql,postgresql。不適用的可以采用觸發(fā)器來實現(xiàn)。

總結

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

相關文章

  • Spring Security JWT 鑒權鏈路完整解析

    Spring Security JWT 鑒權鏈路完整解析

    文章詳細解析了SpringSecurity結合JWT實現(xiàn)鑒權的完整鏈路,從配置到代碼,涵蓋了從請求到業(yè)務層的每一個步驟,包括配置資源服務器模式、JWT編解碼、自定義JWT服務、請求過濾和Controller層的注入機制
    2026-02-02
  • springboot項目開啟https協(xié)議的項目實現(xiàn)

    springboot項目開啟https協(xié)議的項目實現(xiàn)

    本文主要介紹了springboot項目開啟https協(xié)議的項目實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • Spring Cache的基本使用與實現(xiàn)原理詳解

    Spring Cache的基本使用與實現(xiàn)原理詳解

    緩存是實際工作中非經常常使用的一種提高性能的方法, 我們會在很多場景下來使用緩存。下面這篇文章主要給大家介紹了關于Spring Cache的基本使用與實現(xiàn)原理的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2018-05-05
  • SpringBoot中的定時調度服務使用詳解

    SpringBoot中的定時調度服務使用詳解

    本文介紹了SpringBoot中定時任務的實踐應用,包括pom包配置、啟動類啟用定時調度、創(chuàng)建定時任務、異步執(zhí)行定時任務、自定義任務線程池等內容,SpringBoot內置的@Scheduled注解可以滿足大部分業(yè)務需求
    2026-04-04
  • Android Studio中ButterKnife插件的安裝與使用詳解

    Android Studio中ButterKnife插件的安裝與使用詳解

    本篇文章主要介紹了Android Studio中ButterKnife插件的安裝與使用詳解,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Netty如何設置為Https訪問

    Netty如何設置為Https訪問

    這篇文章主要介紹了Netty如何設置為Https訪問,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 一文帶你剖析Redisson分布式鎖的原理

    一文帶你剖析Redisson分布式鎖的原理

    相信使用過redis的,或者正在做分布式開發(fā)的童鞋都知道redisson組件,它的功能很多,但我們使用最頻繁的應該還是它的分布式鎖功能,少量的代碼,卻實現(xiàn)了加鎖、鎖續(xù)命(看門狗)、鎖訂閱、解鎖、鎖等待(自旋)等功能,我們來看看都是如何實現(xiàn)的
    2022-11-11
  • Spring中的ClassPathXmlApplicationContext源碼詳解

    Spring中的ClassPathXmlApplicationContext源碼詳解

    這篇文章主要介紹了Spring中的ClassPathXmlApplicationContext源碼詳解,ApplicationContext的主要實現(xiàn)類是ClassPathXmlApplicationContext和FileSystemXmlApplicationContext,前者默認從類路徑加載配置文件,后者默認從文件系統(tǒng)中裝載配置文件,需要的朋友可以參考下
    2023-12-12
  • Java高級-反射&動態(tài)代理詳解

    Java高級-反射&動態(tài)代理詳解

    這篇文章主要介紹了Java高級-反射&動態(tài)代理詳解,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • 新手小白看過來學JAVA必過IO流File字節(jié)流字符流

    新手小白看過來學JAVA必過IO流File字節(jié)流字符流

    這篇文章主要介紹了新手小白學JAVA到IO流File字節(jié)流字符流的重點,對流不清楚的新手同學快進來學習吧,大佬也可以進來溫故一下
    2021-08-08

最新評論

饶平县| 秀山| 开封县| 谢通门县| 台东县| 彭山县| 鄂州市| 荆州市| 杭州市| 碌曲县| 道真| 禹城市| 龙里县| 金坛市| 阜南县| 鞍山市| 郧西县| 马关县| 海淀区| 西乌珠穆沁旗| 迁西县| 开封县| 靖远县| 宁陵县| 葵青区| 建昌县| 云林县| 崇仁县| 金湖县| 新竹县| 木兰县| 朝阳市| 台中县| 武陟县| 鄄城县| 轮台县| 扎兰屯市| 房产| 宁明县| 蓬安县| 平顺县|