SpringBoot PostgreSQL upsert

这篇具有很好参考价值的文章主要介绍了SpringBoot PostgreSQL upsert。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

PostgreSQL 的 upsert 功能:当记录不存在时,执行插入;否则,进行更新。但是版本需要在9.5以上文章来源地址https://www.toymoban.com/news/detail-596166.html

  • upsert SQL示例
INSERT INTO table_name(column_list) 
VALUES(value_list)
ON CONFLICT target action;

  • SQL字符串定义

    @Autowired
    private EntityManager entityManager;
	
	//具体业务SQL
    private static final String INSERT_QUERY_BASE_OFFLINE_AUTH = 
    "insert INTO etk_lg_life (fbh, offline_auth_id, offline_auth_time) VALUES  ";
    private static final String INSERT_PARAM_FOOTER_OFFLINE_AUTH = 
    "  on conflict (fbh)  do update set offline_auth_id = EXCLUDED.offline_auth_id , offline_auth_time=EXCLUDED.offline_auth_time ";
	
    private static final int INSERT_BATCH_SIZE = 1000;
    private static final String DELIMITER = ",";
  • 函数定义&使用
 private void insertAll1(List<String> lgs, Date dataDate, int linkId) {
 		//日期转时间字符串的函数而已
        String dataDateStr = DateUtil.format4Sql(dataDate);

        String values = lgs.stream().map(lg -> this.renderSqlForLgLife(lg, dataDateStr, linkId))
                .collect(Collectors.joining(DELIMITER));

        String insertSQL = INSERT_QUERY_BASE_OFFLINE_AUTH + values +INSERT_PARAM_FOOTER_OFFLINE_AUTH ;

        entityManager.createNativeQuery(insertSQL).executeUpdate();
        entityManager.flush();
        entityManager.clear();

    }
   下方函数为拼接values-SQL///
    private String renderSqlForLgLife(String lg, String dataDateStr, int linkId) {
        StringBuilder sBuilder = new StringBuilder();

        sBuilder.append("('").append(lg).append("',").append(linkId).append(",'").append(dataDateStr).append("')");

        return sBuilder.toString();
    }

ListUtils.partition(lgLifeModel.getLgs(), INSERT_BATCH_SIZE).forEach(lgs -> {
                insertAll1(lgs, lgLifeModel.getDataDates()[0], lgLifeModel.getLinkId());

                log.info("插入{}life数据成功", lgs.size());
            });

到了这里,关于SpringBoot PostgreSQL upsert的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • PostgreSQL数据库——Docker版本的postgres安装 & Navicat连接方式+导入向导使用 & SpringBoot结合Jpa使用PostgreSQL初步

    1.PostgreSQL数据库初始,开源; 2.Docker版本的postgres安装,以及挂载启动; 3.Navicat连接方式+导入向导使用,导入csv文件; 4.SpringBoot结合Jpa使用PostgreSQL初步; PostgreSQL是一种开源的关系型数据库管理系统(RDBMS),它是一种高度可扩展的、可靠的、功能丰富的数据库系统。以下是

    2024年02月04日
    浏览(78)
  • Springboot + Vue ElementUI 实现MySQL&&Postgresql可视化

    PostgreSQL教程--实现类似于MySQL的show create table功能实现见末尾 效果如图: DB连接配置维护: Schema功能:集成Screw生成文档,导出库的表结构,导出表结构和数据  表对象操作:翻页查询,查看创建SQL,生成代码 可以单个代码文件下载,也可以全部下载(打成zip包下载返回)

    2024年02月12日
    浏览(41)
  • SpringBoot集成Flink-CDC 采集PostgreSQL变更数据发布到Kafka

    最近做的一个项目,使用的是pg数据库,公司没有成熟的DCD组件,为了实现数据变更消息发布的功能,我使用SpringBoot集成Flink-CDC 采集PostgreSQL变更数据发布到Kafka。 监听数据变化,进行异步通知,做系统内异步任务。 架构方案(懒得写了,看图吧): -- 创建pg 高线数据同步用

    2024年02月02日
    浏览(46)
  • ruoyi(若依)配置多数据源(mysql+postgresql),rouyi(Springboot)多数据源设置

    (1)修改DatasourceType (2)修改DruidConfig,这里有很多细节要注意,就是大小写的问题 (3)使用选择数据源,会自动切换数据源

    2024年02月16日
    浏览(64)
  • SpringBoot+MybatisPlus+dynamic-datasources实现连接Postgresql和mysql多数据源

    dynamic-datasource-spring-boot-starter实现动态数据源Mysql和Sqlserver: dynamic-datasource-spring-boot-starter实现动态数据源Mysql和Sqlserver_dynamic-datasource-spring-boot-starter mysql sqlse-CSDN博客 SpringBoot中整合MybatisPlus快速实现Mysql增删改查和条件构造器: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/13

    2024年01月21日
    浏览(42)
  • SpringBoot+dynamic-datasource实现多数据源(msyql、sqlserver、postgresql)手动切换

    SpringBoot+MybatisPlus+dynamic-datasources实现连接Postgresql和mysql多数据源: SpringBoot+MybatisPlus+dynamic-datasources实现连接Postgresql和mysql多数据源-CSDN博客 上面实现通过注解和配置文件的方式去进行多数据源操作。 如果业务需求,比如查询第三方接口时提供的是sqlserver的视图连接方式时,

    2024年01月20日
    浏览(46)
  • 【华为云】基于华为云欧拉操作系统(HCE OS)容器化部署传统应用(Redis+Postgresql+Git+SpringBoot+Nginx)

    博文内容为 华为云欧拉操作系统入门级开发者认证(HCCDA – Huawei Cloud EulerOS) 实验笔记整理 认证地址:https://edu.huaweicloud.com/certificationindex/developer/9bf91efb086a448ab4331a2f53a4d3a1 博文内容涉及一个传统 Springboot 应用HCE部署, 以及相关数据库 Redis、Postgresql、Nginx 的容器化部署 理解不

    2024年02月22日
    浏览(62)
  • 【Spring Boot】Spring Boot项目中如何查看springBoot版本和Spring的版本

    在项目中查看默认版本有两种方式如下 Spring Boot 的最新版本支持情况: 版本 发布时间 停止维护时间 停止商业支持 3.0.x 2022-11-24 2023-11-24 2025-02-24 2.7.x 2022-05-19 2023-11-18 2025-02-18 2.6.x 2021-12-17 2022-11-24 2024-02-24 2.5.x 2021-05-20 已停止 2023-08-24 2.4.x 2020-11-12 已停止 2023-02-23 2.3.x 2020-05-

    2024年02月11日
    浏览(99)
  • PostgreSQL教程:PostgreSQL配置远程连接

    要搞两个配置信息,一个关于postgreSQL的远程连接配置以及postgreSQL的日志配置。 PostgreSQL的主要配置放在数据目录下的, postgresql.conf 以及 pg_hba.conf 配置文件 这些配置文件都放在了 上图可以看到,postgreSQL的核心文件,都属于postgres用户,操作的时候,尽可能的别用root用户,容

    2024年02月06日
    浏览(38)
  • PostgreSQL Linux操作PostgreSQL数据库

    PostgreSQL教程 菜鸟教程:https://www.runoob.com/postgresql/postgresql-tutorial.html 登录PG数据库:psql -U 用户名(U需要大写) 登录PG数据库(指定主机、端口,并进入指定数据库): psql -U 用户名 -h 127.0.0.1 -p 5432 -d 数据库名 -U 登录的用户名 -h 连接的主机(默认127.0.0.1,可替换成远程主机

    2024年02月11日
    浏览(64)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包