Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用simpleJdbcInsert替换重复的_Java_Mysql_Spring_Simplejdbcinsert - Fatal编程技术网

Java 使用simpleJdbcInsert替换重复的

Java 使用simpleJdbcInsert替换重复的,java,mysql,spring,simplejdbcinsert,Java,Mysql,Spring,Simplejdbcinsert,我使用tomcat作为Mysql服务器5.5的服务器端 我使用Spring框架进行数据库连接 我希望能够使用simpleJdbcInsert将一行插入表中。如果由于重复而导致插入失败,我希望它替换重复的行 有没有一种方法可以实现SimpleJDBCcinsert,或者我应该使用jdbcTemplate并使用“on DUPLICATE”语句创建on查询 感谢从逻辑上讲,如果有双主键,则会发生复制 因此,如果您使用的是传统的JDBC甚至Hibernate,那么在插入新的主键值之前,您应该检查是否已经

我使用tomcat作为Mysql服务器5.5的服务器端

我使用Spring框架进行数据库连接

我希望能够使用simpleJdbcInsert将一行插入表中。如果由于重复而导致插入失败,我希望它替换重复的行

有没有一种方法可以实现SimpleJDBCcinsert,或者我应该使用jdbcTemplate并使用“on DUPLICATE”语句创建on查询


感谢

从逻辑上讲,如果有双主键,则会发生复制

因此,如果您使用的是传统的JDBC甚至Hibernate,那么在插入新的主键值之前,您应该检查是否已经存在相同的主键值

但是如果主键尚未设置,或者将由DBMS设置,则会出现不同的问题

  • 在JDBC中,同样需要在插入新代码之前通过查询执行旧式手动检查,但是

  • 在Hibernate中,您只需要更新它。如果没有重复项,Hibernate将创建新的,但是如果有重复项,Hibernate将替换

  • 在JDBC中,同样需要在插入新代码之前通过查询执行旧式手动检查,但是


    这是不正确的-因为在检查现有行和实际插入之间有一个时间间隔,因此并行线程中的某个人可以同时插入具有相同键的行,您将获得
    DuplicateKeyException
    (如果我们谈论spring)。因此,您必须处理此异常,或者只使用诚实的SQL
    insert-into。。。按重复键…

    谢谢。我使用传统的JDBC。我只是希望simplejdbcinsert可以自己检查行是否存在,如果存在,则进行替换。但这毕竟不是那么简单:)k谢谢我会手动操作我真的不知道你的确切情况,但是如果密钥不是生成的,我们没有选择自动执行。您知道Hibernate是使用两个查询还是使用INSERT。。。用重复的钥匙?