首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Mybatis使用generatedKey在插入数据时返回自增id始终1,自增id实际返回到原对象当中的问题排查

今天在使用数据库的时候,遇到一个场景,即在插入数据完成后需要返回此数据对应的自增主键id,但是在使用Mybatis中的generatedKey且确认各项配置均正确无误的情况下,每次插入成功后,返回的都是...1,而不是最新的自增Id。...int表示的是插入操作受影响的行数,而不是指的自增长id,那么返回的自增id到底去哪里了呢?...通过下面的Debugg我们知道自增id返回到testGenKey的原对象中去了。 举例示范配置 数据库示例表  generator的配置文件 <?...DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_

1.5K10
您找到你想要的搜索结果了吗?
是的
没有找到

hibernate中executeUpdate的缓存问题

:spring3 + hibernate3 问题描述: 在做单元测试的时候,有一个调整部门排序的方法adjustDeptOrder(String deptid,String targetDeptid)始终无法通过测试...问题原因分析: 1 初步分析 首先怀疑执行executeUpdate方法后不会更新到缓存到hibernate的一级缓存中去,所以junit测试的时候拿到的还是原来的缓存对象。...2 方法执行调试: 1 executeUpdate被执行时尽管后台也有响应的hql输出,但是此时调用获取部门列表,查看返回的部门列表,排序属性还是原来的,所以executeUpdate不会更新hibernate...2 测试用例中获取单个部门id的方法,并没有输出sql语句,所以肯定是从缓存中获取对象的,所以你能理解部门1、部门2的排序还是1、2了吧 。...2 在控制台中输出了sql语句 应该是hibernate准备执行的操作,而不是已经执行的操作 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

67320

not for you什么意思_issue to

INSERT、UPDATE 或 DELETE 语句的效果是修改表中零行或多行中的一列或多列。executeUpdate返回值是一个整数,指示受影响的行数(即更新计数)。...对于 CREATE TABLE 或 DROP TABLE 等不操作行的语句executeUpdate返回值总为零。...创建表,改变表,删除表都是 DDL 语句的例子,要用 executeUpdate 方法来执行。你也可以从它的名字里看出,方法 executeUpdate 也被用于执行更新表 SQL 语句。...在这种情况下,判断 null 真正含义的唯一方法是调用方法 getUpdateCount,它将返回一个整数。这个整数为调用语句所影响的行数;如果为 -1 则表示结果是结果集或没有结果。...如果方法 getResultSet 已返回 null(表示结果不是 ResultSet 对象),则返回值 -1 表示没有其它结果。

85720

MySQL---数据库从入门走向大神系列(七)-Java访问数据库配置及简单使用方法execute

只是查询时返回的结果是告诉成功与否,如果要获取查询结果,得另外用” st.getResultSet()”获取 ?...executeUpdate() @Test public void executeUpdate() throws SQLException{ Statement st = ConnFactory.getConnection...//String sql = "select * from book"; int num = st.executeUpdate(sql);//返回值是影响的行数 System.out.println...PrepareStatement: java,servlet中的PreparedStatement 接口继承了Statement,并与之在两方面有所不同:有人主张,在JDBC应用中,如果你已经是稍有水平开发者,你就应该始终以....而statement的语句中,即使是相同一操作,而由于每次操作的数据不同所以使整个语句相匹配的机会极小,几乎不太可能匹配.比如:   insertintotb_name(col1,col2)values

46930

java executeupdate_Java自学-JDBC execute与executeUpdate的区别

JDBC中 execute与executeUpdate的区别 execute与executeUpdate的区别 步骤 1 : 相同点 execute与executeUpdate的相同点:都可以执行增加...TODO Auto-generated catch block e.printStackTrace(); } } } 步骤 2 : 不同点 不同1: execute可以执行查询语句 然后通过getResultSet...,把结果集取出来 executeUpdate不能执行查询语句 不同2: execute返回boolean类型,true表示执行的是查询语句,false表示执行的是insert,delete,update...characterEncoding=UTF-8″,”root”, “admin”); Statement s = c.createStatement();) { // 不同1:execute可以执行查询语句...不能执行查询语句 // s.executeUpdate(sqlSelect); // 不同2: // execute返回boolean类型,true表示执行的是查询语句,false表示执行的是insert

35420

java JDBC连接数据库方法

数据库名,密码”); Connection con =DriverManager.getConnection(“jdbc:odbc:PIMS”,”Test”,”1234”); 3.数据库进行操作 (1)...Statement 接口提供了三种执行 SQL 语句的方法:executeQuery、executeUpdate 和execute。...方法 executeUpdate 用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQLDDL(数据定义语言)语句,例如 CREATE TABLE 和 DROP TABLE。...INSERT、UPDATE 或 DELETE语句的效果是修改表中零行或多行中的一列或多列。executeUpdate返回值是一个整数,指示受影响的行数(即更新计数)。...对于CREATE TABLE 或 DROP TABLE 等不操作行的语句executeUpdate返回值总为零。 方法 execute用于执行返回多个结果集、多个更新计数或二者组合的语句

13410

executeUpdate()返回值「建议收藏」

executeUpdate()是PreparedStatement对象众多的抽象方法中的一个 在jdk1.8中executeUpdate()有两种返回值(搜索一下 PreparedStatement...返回值分别是:int 和ResultSet 在使用数据库的项目中作者用到了返回值为int的方法,查询了一下相关的解释 int executeUpdate() throws SQLException...执行在该SQL语句PreparedStatement对象,它必须是一个SQL数据操纵语言(DML)语句,如INSERT , UPDATE或DELETE ; 或不返回任何内容的SQL语句,例如DDL语句...结果 (1)SQL数据操作语言(DML)语句的行计数或(2)0不返回的SQL语句 结果的意思为: executeUpdate返回值是一个整数,指受影响的行数(即更新计数)。...对于CREATETABLE或DROPTABLE等不操作行的语句executeUpdate返回值总为零。 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

1.3K20

EXCUTE方法executeUpdate「建议收藏」

Execute语句的方法 1方法executeQuery用于产生单个结果集的语句,例如 SELECT 语句。 被使用最多的执行 SQL 语句的方法是 executeQuery。...INSERT、UPDATE 或 DELETE 语句的效果是修改表中零行或多行中的一列或多列。executeUpdate返回值是一个整数,指示受影响的行数(即更新计数)。...对于 CREATE TABLE 或 DROP TABLE 等不操作行的语句executeUpdate返回值总为零。...创建表,改变表,删除表都是 DDL 语句的例子,要用 executeUpdate 方法来执行。你也可以从它的名字里看出, 方法 executeUpdate 也被用于执行更新表 SQL 语句。...实际上,相对于创建表来说,executeUpdate 用于更新表的时间更多,因为表只需要创建一次,但经常被更新。方法execute:用于执行返回多个结果集、多个更新计数或二者组合的语句

64330

Java数据库编程中的技巧

(select) sm.executeUpdate(sql); // 执行数据更新语句(delete、update、insert、drop等)statement.close(); 2)用PreparedStatement...ResultSet rs = ps.executeQuery(); // 查询 int c = ps.executeUpdate(); // 更新 3、处理执行结果 查询语句返回记录集ResultSet...更新语句返回数字,表示该更新影响的记录数。 ResultSet的方法: 1、next(),将游标往后移动一行,如果成功返回true;否则返回false。...ResultSet rs = ps.executeQuery(); // 查询 int c = ps.executeUpdate(); // 更新 3、处理执行结果 查询语句返回记录集ResultSet...更新语句返回数字,表示该更新影响的记录数。 ResultSet的方法: 1、next(),将游标往后移动一行,如果成功返回true;否则返回false。

89750

jdbc 中 excute executeUpdate的用法作用

INSERT、UPDATE 或 DELETE 语句的效果是修改表中零行或多行中的一列或多列。executeUpdate返回值是一个整数,指示受影响的行数(即更新计数)。...对于 CREATE TABLE 或 DROP TABLE 等不操作行的语句executeUpdate返回值总为零。...使用executeUpdate方法是因为在 createTableCoffees 中的 SQL 语句是 DDL (数据定义语言)语句。...创建表,改变表,删除表都是 DDL 语句的例子,要用 executeUpdate 方法来执行。你也可以从它的名字里看出,方法 executeUpdate 也被用于执行更新表 SQL 语句。...getResultSet 返回 null 意味着 不是结果集 可以理解为是一个更新计数或没有其它结果 getUpdateCount 返回影响的行数 -1 表示结果是结果集或没有结果

80020

executeupdate mysql_sql语句executeQuery和executeUpdate之间的区别

这个方法被用来执行 SELECT 语句,它几乎是使用最多的 SQL 语句。但也只能执行查询语句,执行后返回代表查询结果的ResultSet对象。...+ “/t” + rs.getString(2)); } 方法二.executeUpdate 用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQL DDL(数据定义语言)语句...INSERT、UPDATE 或 DELETE 语句的效果是修改表中零行或多行中的一列或多列。executeUpdate返回值是一个整数(int),指示受影响的行数(即更新计数)。...对于 CREATE TABLE 或 DROP TABLE 等不操作行的语句executeUpdate返回值总为零。...,返回受影响的记录条数 return stmt.executeUpdate(sql); 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

41440

JDBC | JDBC API详解及数据库连接池

执行sql int count = stmt.executeUpdate(sql); //执行完DML语句,受影响的行数 执行DDL语句 // 定义sql String sql = "drop database...(sql); //执行完DDL语句,可能是0 3.4、ResultSet 3.4.1、概述 ResultSet(结果集对象)作用:封装了SQL查询语句的结果 执行了DQL语句后就会返回该对象,对应执行DQL...语句的方法如下: ResultSet executeQuery(sql):执行DQL 语句返回 ResultSet 对象 那么我们就需要从 ResultSet 对象中获取我们想要的数据。...= 'abcdefg' and password = ''不管是否满足,而 or 后面的 '1' = '1' 是始终满足的,最终条件是成立的,就可以正常的进行登陆了。...的值 执行SQL语句 executeUpdate(); // 执行DDL语句和DML语句 executeQuery(); // 执行DQL语句 注意:调用这两个方法时不需要传递SQL语句,因为获取SQL

61510

执行对象Statement、PreparedStatement和CallableStatement详解 JDBC简介(五)

对于 CREATE TABLE 或 DROP TABLE 等不操作行的语句executeUpdate返回值总为零。 execute   用于执行返回多个结果集、多个更新计数或二者组合的语句。...executeUpdate 执行INSERT UPDATE DELETE 以及SQL DDL(数据定义语言)语句返回受影响的行 execute可以执行所有SQL,所以他可能返回结果集,也可能返回受影响的行...executeUpdate(String sql) 执行给定 SQL 语句,该语句可能为 INSERT、UPDATE 或 DELETE 语句,或者不返回任何内容的 SQL 语句(如 SQL DDL...executeUpdate能够执行的SQL类型比较多,可以执行INSERT、UPDATE 或 DELETE 语句,或者不返回任何内容的 SQL 语句(如 SQL DDL 语句)。...(该语句可能返回多个结果),并通知驱动程序在给定数组中指示的自动生成的键应该可用于获取 execute可以执行所有形式的语句,既然也可以执行INSERT,自然也有返回键值的需求,所以类似executeUpdate

2.2K41

execute,executeQuery和executeUpdate的区别

在jdbc中有3种执行sql的语句分别是execute,executeQuery和executeUpdate execute执行增删改查操作 execute返回的结果是个boolean型,当返回的是...execute通常用于执行不明确的sql语句。 executeQuery执行查询操作 executeQuery返回的是ResultSet结果集,通常是执行了select操作。...executeUpdate执行增删改操作 executeUpdate返回的是int型,表明受影响的行数,通常是执行了insert、update、delete等操作。..., "ssh1");///填入url,用户名,密码 }catch(Exception e){ e.printStackTrace(); } return con; } /** * 用executeUpdate...(sql);//执行sql插入(删除、更新)语句返回插入的行数 System.out.println("插入(删除、更新)"+count+"条数据"); con.close(); } catch (SQLException

61360
领券