java数据库添加和更新操作

java中把一个集合写入数据库,存在就更新,不存在就新增,用java语言怎么写

REPLACE INTO test_table(id,username) VALUES(1,'admin');
这个只需要改sql语句就好了。
不存在即插入,存在即更新

先进行查询不就好了,查集合里面元素是否都存在,将不存在的插入数据库

也可以先更新,更新语句会返回更新的数据条数,如果返回值为0,说明没有数据,再进行插入操作。

首先需求确认集合中存储的内容是什么,假设是一系列的用户对象,那么要确认数据库是否有对应的用户表,表的字段要与对象的属性匹配
假设以上条件满足,那么可以安装以下思路:
1、遍历集合,把遍历出的每个对象根据对象的属性(例如:名称)去数据库的表中查询
2、对查询出来的结果进行判断,如果为null,就新增一条数据到数据库的表中
3、如果不为null,就将遍历出的对象进行更新到数据库的表中
注意:多次执行新增、修改操作要开启事务

  • 把A集合所有taskNo取出来去数据库查询一次,得到集合B
  • A在B里面存在的就更新,不存在的就插入

如有帮助,请采纳,十分感谢!

你是写后端要这个逻辑,还是单纯的java代码?后端里面你用mybatis,先查询一遍数据库中有没有该集合(行信息),根据返回的值确定是否有,没有就写入,有就更新。
如果是单纯的java操作数据库,那就用JDBC,逻辑是上面一样的,网上一搜就有这些代码的实现。

循环list列表,然后单条操作,对应sql为REPLACE INTO table(id,xxx) VALUES(xxx,xxx);

看你用的什么数据库,mysql 先查询,没有就插入数据,有就更新数据

利用 insert into ...... on duplicate key 语法 结合唯一性约束(创建唯一索引,或直接用主键)去做。

例如:insert into table1 (a,b,c) values ('aa','bb','cc') on duplicate key update a = 'aa', b = 'bb', c='cc'
假设其中a创建了唯一索引,因为a字段有唯一性约束,所以在执行上述语句的时候mysql会自动辨别a字段是否存在,如果存在就更新,不存在就插入。

<insert id="insertOrUpdate" parameterType="java.util.List">
    insert into tableName
    (id,lastname,createTime,updateTime)
    values
    <foreach collection="list" item="item" separator=",">
        (#{item.id,jdbcType=VARCHAR},#{item.lastname,jdbcType=VARCHAR},now(), now()
        )
    </foreach>
    ON DUPLICATE KEY UPDATE 
        lastname = values(lastname),
        updateTime = values(updateTime)
</insert>

ON DUPLICATE KEY UPDATE 这句话后面就是更新时要更新的内容;这个是可以根据主键来更新的。

先查询数据库是否有,没有就插入,有就修改

先查询主键是否存在,存在就更新,不存在就增加