mysql generatedkey_Mybatis使用generatedKey在插入数据时返回自增id始终为1,自增id实际返回到原对象当中的问题排查...
今天在使用数据库的时候,遇到一个场景,即在插入数据完成后需要返回此数据对应的自增主键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实际返回到原对象当中的问题排查...相关推荐
- MySQL 插入数据时,中文乱码问题的解决
MySQL 插入数据时,中文乱码问题的解决 参考文章: (1)MySQL 插入数据时,中文乱码问题的解决 (2)https://www.cnblogs.com/sunzn/archive/2013/0 ...
- jdbc 3种获得mysql插入数据的自增字段值的方法_【JDBC】向数据表插入数据时,自动获取生成的主键...
数据表设计时,一般都会有一个主键(Key)(自己指定),有时也可以使用联合主键: 有许多数据库提供了隐藏列为表中的每行记录分配一个唯一键值(如:rowid): 当我们没有指定哪一列作为主键key时,数 ...
- Mybatis + Mysql 插入数据时中文乱码问题
今天碰到一个mybatis向mysql中插入数据时,中文显示为'???'的问题,拿出来说下. 对于数据库操作中出现的中文乱码,一般有两种情况: 数据库本身设置 连接数据库时,jdbc的编码设置 对于第 ...
- mybatis mysql 中文乱码_Mybatis + Mysql 插入数据时中文乱码问题
近日跟朋友一起建立一个项目,用的是spring+mybatis+mysql. 今天碰到一个mybatis向mysql中插入数据时,中文显示为'???'的问题,拿出来说下. 对于数据库操作中出现的中文乱 ...
- MySql插入数据时错误Duplicate entry '131' for key 'PRIMARY'
今天在进行开发的过程中,遇到MySQL数据库插入数据时抛出异常: Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViol ...
- mysql插入数据时如果有相同数据就不插入或者替换
方法1 : insert ignore into 此方法只适用于判断数据库有无相同数据 有就不进行操作,没有就插入 我们知道如果插入数据时如果主键相同 或者有唯一索引之类的列数据相同 如果 ...
- Python连接mysql,插入数据时不报错,但是没有插入进去
Python连接mysql,插入数据时不报错,但是没有插入进去在connect方法中,设置 autocommit =True conn=pymysql.connect(host=host_db,use ...
- mybatis向mysql数据库插入数据时,中文乱码显示为?解决方法
mybatis向mysql数据库插入数据时,中文乱码显示为?解决方法 1.先查看库.表.表字符字段的编码格式.MySQL默认的库和表的字符编码都是latin1,而我们一般需要使用 utf8 //先查看 ...
- FreeSql (八)插入数据时指定列
插入数据时指定列,和忽略列对应,未被指定的列将被忽略. var connstr = "Data Source=127.0.0.1;Port=3306;User ID=root;Passwor ...
最新文章
- AI一分钟 | 美女机器人竟然想生孩子,太可怕了!比尔·盖茨当选中国工程院外籍院士
- linux 将test.log中第1行的所有都替换成,【Linux面试题7】三剑客笔试题集合
- html怎么设置图片倾斜度,CSS3-css如何使图片倾斜45度显示
- LinkedList集合
- VSC为_锐志 VSC 警告灯间歇点亮
- 使用执行程序和ThreadPoolExecutor的Java线程池示例
- Golang的协程池设计
- numpy.random 模块- 随机数
- php---兄弟连的php培训视频的总结(1)
- mysql手册02_事务
- vux页面转换html,Vue 初学者使用 Vux 前端开发框架 - 文章教程
- rapidminer java,rapidminer 数据导入及几个算子简单应用
- IT项目管理 第三章
- amoeba mysql_mysql中间件-amoeba
- [leetcode]剑指offer(C++版题解)
- html页面如何引用母版页,内容页面访问母版页控件的两种方法
- java 判断手机运营商_JS正则表达式判断手机号所属运营商
- 华为鸿蒙是诺基亚,诺基亚、三星前车之鉴,华为鸿蒙必须做好这两点
- 顾客信息表mysql_Qt5.5.0使用mysql编撰小软件源码讲解-顾客信息登记表_mysql
- 郊区春游(状压dp)