今天在使用数据库的时候,遇到一个场景,即在插入数据完成后需要返回此数据对应的自增主键id,但是在使用Mybatis中的generatedKey且确认各项配置均正确无误的情况下,每次插入成功后,返回的都是1,而不是最新的自增Id。

终于凭借着一次Debugg发现的问题,原来在使用Mabatis中的insert或者insertSelective方式插入时,如使用int insert(TestGenKey testGenKey)时,返回值int表示的是插入操作受影响的行数,而不是指的自增长id,那么返回的自增id到底去哪里了呢?通过下面的Debugg我们知道自增id返回到testGenKey的原对象中去了。

举例示范配置

数据库示例表

generator的配置文件

/p>

PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"

"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

connectionURL="jdbc:youraddress"

userId="yourname"

password="yourpass">

enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false"

selectByExampleQueryId="false">

给需要获取自增长id的表配置generatedKey

依据上述配置生成出来的PO Model如下

package yourpackage.model;

import javax.persistence.*;

@Table(name = "test_gen_key")

public class TestGenKey {

@Id

@Column(name = "product_id")

@GeneratedValue(generator = "JDBC")

private Integer productId;

private String name;

private String sex;

/**

* @return product_id

*/

public Integer getProductId() {

return productId;

}

/**

* @param productId

*/

public void setProductId(Integer productId) {

this.productId = productId;

}

/**

* @return name

*/

public String getName() {

return name;

}

/**

* @param name

*/

public void setName(String name) {

this.name = name == null ? null : name.trim();

}

/**

* @return sex

*/

public String getSex() {

return sex;

}

/**

* @param sex

*/

public void setSex(String sex) {

this.sex = sex == null ? null : sex.trim();

}

}

测试及Debugg

编写测试方法测试插入

插入成功后观察对应的变量对应的值

总结:调用Insert后插入操作之后,所得到自增长Id被赋值到原对象当中,而不是返回值!

mysql generatedkey_Mybatis使用generatedKey在插入数据时返回自增id始终为1,自增id实际返回到原对象当中的问题排查...相关推荐

  1. MySQL 插入数据时,中文乱码问题的解决

    MySQL 插入数据时,中文乱码问题的解决 参考文章: (1)MySQL 插入数据时,中文乱码问题的解决 (2)https://www.cnblogs.com/sunzn/archive/2013/0 ...

  2. jdbc 3种获得mysql插入数据的自增字段值的方法_【JDBC】向数据表插入数据时,自动获取生成的主键...

    数据表设计时,一般都会有一个主键(Key)(自己指定),有时也可以使用联合主键: 有许多数据库提供了隐藏列为表中的每行记录分配一个唯一键值(如:rowid): 当我们没有指定哪一列作为主键key时,数 ...

  3. Mybatis + Mysql 插入数据时中文乱码问题

    今天碰到一个mybatis向mysql中插入数据时,中文显示为'???'的问题,拿出来说下. 对于数据库操作中出现的中文乱码,一般有两种情况: 数据库本身设置 连接数据库时,jdbc的编码设置 对于第 ...

  4. mybatis mysql 中文乱码_Mybatis + Mysql 插入数据时中文乱码问题

    近日跟朋友一起建立一个项目,用的是spring+mybatis+mysql. 今天碰到一个mybatis向mysql中插入数据时,中文显示为'???'的问题,拿出来说下. 对于数据库操作中出现的中文乱 ...

  5. MySql插入数据时错误Duplicate entry '131' for key 'PRIMARY'

    今天在进行开发的过程中,遇到MySQL数据库插入数据时抛出异常: Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViol ...

  6. mysql插入数据时如果有相同数据就不插入或者替换

    方法1 : insert ignore into       此方法只适用于判断数据库有无相同数据 有就不进行操作,没有就插入 我们知道如果插入数据时如果主键相同 或者有唯一索引之类的列数据相同 如果 ...

  7. Python连接mysql,插入数据时不报错,但是没有插入进去

    Python连接mysql,插入数据时不报错,但是没有插入进去在connect方法中,设置 autocommit =True conn=pymysql.connect(host=host_db,use ...

  8. mybatis向mysql数据库插入数据时,中文乱码显示为?解决方法

    mybatis向mysql数据库插入数据时,中文乱码显示为?解决方法 1.先查看库.表.表字符字段的编码格式.MySQL默认的库和表的字符编码都是latin1,而我们一般需要使用 utf8 //先查看 ...

  9. FreeSql (八)插入数据时指定列

    插入数据时指定列,和忽略列对应,未被指定的列将被忽略. var connstr = "Data Source=127.0.0.1;Port=3306;User ID=root;Passwor ...

最新文章

  1. AI一分钟 | 美女机器人竟然想生孩子,太可怕了!比尔·盖茨当选中国工程院外籍院士
  2. linux 将test.log中第1行的所有都替换成,【Linux面试题7】三剑客笔试题集合
  3. html怎么设置图片倾斜度,CSS3-css如何使图片倾斜45度显示
  4. LinkedList集合
  5. VSC为_锐志 VSC 警告灯间歇点亮
  6. 使用执行程序和ThreadPoolExecutor的Java线程池示例
  7. Golang的协程池设计
  8. numpy.random 模块- 随机数
  9. php---兄弟连的php培训视频的总结(1)
  10. mysql手册02_事务
  11. vux页面转换html,Vue 初学者使用 Vux 前端开发框架 - 文章教程
  12. rapidminer java,rapidminer 数据导入及几个算子简单应用
  13. IT项目管理 第三章
  14. amoeba mysql_mysql中间件-amoeba
  15. [leetcode]剑指offer(C++版题解)
  16. html页面如何引用母版页,内容页面访问母版页控件的两种方法
  17. java 判断手机运营商_JS正则表达式判断手机号所属运营商
  18. 华为鸿蒙是诺基亚,诺基亚、三星前车之鉴,华为鸿蒙必须做好这两点
  19. 顾客信息表mysql_Qt5.5.0使用mysql编撰小软件源码讲解-顾客信息登记表_mysql
  20. 郊区春游(状压dp)

热门文章

  1. 失眠不仅仅是睡不着,出现这些情况也算失眠
  2. 回顾Qt调用串口设备
  3. 企业如何进行商业模式设计?
  4. Oracle Database 9i/10g安装后的基本环境与服务
  5. java布局如何使用靠左,css设置span靠左布局方法技巧篇
  6. html背景图平移显示一次,制作网页如何使背景图片只出现一次(拉伸)?
  7. 获得你的日语姓名(your real japanese name)
  8. 怎么裁剪照片尺寸?三种方法快速裁剪
  9. 请叫我程序员 第5章
  10. java 二十四节气_获取二十四节气示例代码