首页 > 数据库 >Mybatis 批量更新 PostgreSQL 数据库,返回更新行数

Mybatis 批量更新 PostgreSQL 数据库,返回更新行数

时间:2024-02-28 15:26:29浏览次数:34  
标签:tmp PostgreSQL addr update 更新 item num Mybatis id

1. 拼接成1条sql语句,可返回修改行数。

PostgreSQL的批量更新原生sql:

update person
set 
    name=tmp.name,
    age=tmp.age,
    addr=tmp.addr,
    num=tmp.num,
    update_time=tmp.update_time
 from (
     values
     (1,'关羽',43,'成都',1,'2021-03-26 17:32:28'),
     (2,'张飞',37,'成都',2,'2021-03-26 17:32:28'),
     (3,'赵云',33,'成都',3,'2021-03-26 17:32:28'),
     (4,'马超',31,'成都',4,'2021-03-26 17:32:28'),
     (5,'黄忠',49,'成都',5,'2021-03-26 17:32:28')
 ) as
     tmp(id,name,age,addr,num,update_time)
 where
     person.id=tmp.id

在Mybatis的xml中的sql写法:

<update id="batchUpdate">
    update person
    set
        name=tmp.name,
        age=tmp.age,
        addr=tmp.addr,
        num=tmp.num,
        update_time=tmp.update_time
    from (
        values
        <foreach collection="list" item="item" separator=",">
            (
            #{item.id},
            #{item.name},
            #{item.age},
            #{item.addr},
            #{item.num},
            cast(#{item.updateTime} as timestamp)
            )
        </foreach>
    ) as
        tmp(id,name,age,addr,num,update_time)
    where
        spares_stocktaking_detail.detail_id = temp.detail_id
</update>

其中,cast(#{item.updateTime} as timestamp) 将数据类型转为时间格式。

2. 执行多条sql语句,分号分隔。成功只返回1。

<update id="batchUpdate">
    <foreach collection="list" item="item" separator=";">
        update person
        set
            name = #{item.name},
            age = #{item.age},
            addr = #{item.addr},
            num = #{item.num},
            update_time = #{item.updateTime}
        where
            id = #{item.id}
    </foreach>
</update>

标签:tmp,PostgreSQL,addr,update,更新,item,num,Mybatis,id
From: https://www.cnblogs.com/cralor/p/18040513

相关文章

  • docker 运行postgresql 极限简洁教程
    首先要拉取pq的image:dockerpullpostgres,拉取后可以用dockerimagels查看是否拉取镜像成功。同理,一同拉取pgadmin4方便查看数据:dockerpulldpage/pgadmin4。然后运行image,生成container,运行pq和pgadmin:注意,因为数据库需要存储空间,配合docker运行就需要volume,注意下......
  • psql: 无法联接到服务器: 没有那个文件或目录 服务器是否在本地运行并且在 Unix 域套
    今天在服务器上用root用户输入pgsql和pg_dump报错如下 首先检查了下pg的状态发现正常systemctlstatuspostgresql 然后尝试输入pg_dump-h127.0.0.1psql-h127.0.0.1不再报错 添加了-h127.0.0.1原因未知,待解决...... 第二次尝试添加了环境变量vim /et......
  • Mybatis系列之(七)参数深入
    参数深入1.ParameterType(输入类型)1.1通过ParameterType传递Pojo对象Mybatis使用ognl表达式解析对象字段的值ognl表达式objectgraphicnavigationlanguage对象图导航语言通过对象的取值方法(属性的get方法)来获取数据,在写法上把get给省略了......
  • Mybatis系列之(六)MyBatis的CRUD操作
    MyBatis的CRUD操作CRUD操作指的是增加(Create)、检索(Retrieve)、更新(Update)和删除(Delete)操作1.编程步骤在dao接口中写方法映射配置文件中写对应的配置如果是Insert操作,占位符使用#{},括号中的内容要与实体类属性的get/set方法名保持一致(如果是通过右键生成的方法,......
  • Mybatis系列之(五)Mybatis在使用基于代理Dao的方式实现增删改查时都干了啥事儿
    Mybatis在使用基于代理Dao的方式实现增删改查时都干了啥事儿绝对路径:可能出现机器中没有D盘的情况,需要修改代码相对路径:部署项目后src就不存在了,需要修改代码基于以上两点,读取配置文件仅通过图中的两种方式进行读取构建者模式:专业的事儿由专业的人来做工厂模式:需要新的类的对......
  • Mybatis系列之(三)注解开发步骤
    注解开发步骤1.项目结构新建项目,创建与XML开发完全相同的项目结构删除resources/com文件夹2.全局配置文件修改SqlMapConfig.xml文件的mapper配置部分<!--指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件--><mappers><!--resource......
  • Mybatis系列之(二)Mybatis 入门
    Mybatis入门1.准备数据创建数据库eesy_mybatis,创建表user,插入数据2.pom文件打包方式<packaging>jar</packaging>导入坐标mybatis坐标mybatis官网文档-入门-安装<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> &......
  • Mybatis系列之(一)Mybatis 概述
    Mybatis概述1.三层架构解决持久层问题项目=框架(半成品)+业务需求表现层:展示数据业务层:业务需求持久层:数据库交互2.持久层技术解决方案2.1JDBC技术(规范)2.2Spring的JdbcTemplate(工具类)Spring中对JDBC的简单封装2.3Apache的DBUtils(工具类)对JDBC的简单封装3.......
  • linux网络编程基础知识汇总(更新中)
    阿帕网arpanet阿帕网为美国国防部高级研究计划署开发的世界上第一个运营的封包交换网络,它是全球互联网的始祖。局域网LAN(LocalAreaNetwork):通过路由器和交换机把计算机连接在一起广域网WAN(WideAreaNetwork)//广域网和局域网没有明显的界限,是一个相对的概念,一般把......
  • idea使用MybatisX插件根据表自动生成代码
    1.情景展示在实际开发过程中,根据数据库的表生成对应的增删改查代码,最为常见。除了使用公司封装的代码自动生成外,有没有通用的呢?2.具体分析在idea当中,我们可以使用MybatisX插件生成:表对应的实体类、dao层所使用的的mapper.java文件、mybatis对应的xml文件、service层所需的......