mybaits中插入到mysql数据库自动返回id主键

在做电商项目时,做到添加商品时,添加商品涉及到图片表和最小销售单元表,这两个表有商品的id,添加图片和最小销售单元,要先返回产品的id。具体做法如下

 

<insert id="addProduct" parameterType="Product" useGeneratedKeys="true" keyProperty="id">
插入语句

</insert>

其中id表示的是dao中的添加方法,

parameterType代表的是dao中的参数类型,

useGeneratedkeys表示的是jdbc的getGeneratedkeys方法获取主键并赋值到keyProperty设置的模型中。默认为false,设置为true才能执行。在sql server和mysql中支持自增长的id,可以使用,在oracle中不支持自增长,所以不能使用。

keyProperty表示的是要返回的主键。

dao中方法:

public Integer addProduct(Product product);

javaBean中product的属性

 1 public class Product implements Serializable{
 2
 3     private Integer id;
 4
 5        public Integer getId() {
 6         return id;
 7     }
 8     public void setId(Integer id) {
 9         this.id = id;
10     }
11 }
时间: 2024-11-07 23:23:46

mybaits中插入到mysql数据库自动返回id主键的相关文章

javaweb学习总结(三十七)——获得MySQL数据库自动生成的主键

测试脚本如下: 1 create table test1 2 ( 3 id int primary key auto_increment, 4 name varchar(20) 5 ); 测试代码: 1 package me.gacl.demo; 2 3 import java.sql.Connection; 4 import java.sql.PreparedStatement; 5 import java.sql.ResultSet; 6 import me.gacl.utils.JdbcU

(jdbc)取得数据库自动生成的主键方法

一些类,在前面的博客中有,就不重复了 public class Test2 { TestDAO t=new TestDAO(); /*前提是数据表的主键是自动增加的, *取得数据库自动生成的主键 * */ @Test public void testGetKeyValues() throws Exception{ Connection connection=null; PreparedStatement preparedStatement=null; try { String sql="inse

得到数据库自动生成的主键值

package com.atguigu.jdbc; import java.sql.Connection;import java.sql.Date;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.sql.Statement; import org.junit.Test; public class JDBCTest { /** * 得到

spring jdbcTemplate insert插入Oracle数据库后返回当前主键id

最近做一个spring版本3.0.4的老项目功能,应用场景要用到jdbctemplate插入oracle表后返回主键ID拿来和其他表关联. 用oralce的可以一直用这种处理方式,高兼容低. public long insertOraGetId(final QuetInvtHeadVO headVO) { KeyHolder keyHolder = new GeneratedKeyHolder(); jdbcTemplate.update(new PreparedStatementCreator

mysql获取自动生成的主键报错:Generated keys not requested. You need to specify Statement.RETURN_GENERATED_KEYS to Statement.execu

今天项目中需要获取刚插入的自动增长 的主键值: pstmt=conn.prepareStatement(sql); ... rs=pstmt.getGeneratedKeys(); 谁知道报错:Generated keys not requested. You need to specify Statement.RETURN_GENERATED_KEYS to Statement.execu 上网查了之后才知道原来是5.1.5的包,替换成5.1.17之后,如下生成主键的代码都会报错: Gener

MySQL 使用自增ID主键和UUID 作为主键的优劣比较详细过程(从百万到千万表记录测试)

测试缘由 一个开发同事做了一个框架,里面主键是uuid,我跟他建议说mysql不要用uuid用自增主键,自增主键效率高,他说不一定高,我说innodb的索引特性导致了自增id做主键是效率最好的,为了拿实际的案例来说服他,所以准备做一个详细的测试.   作为互联网公司,一定有用户表,而且用户表UC_USER基本会有百万记录,所以在这个表基础上准测试数据来进行测试.            测试过程是目前我想到的多方位的常用的几种类型的sql进行测试,当然可能不太完善,欢迎大家留言提出更加完善的测试方

分布式中的分库分表之后,ID 主键如何处理?

面试题 分库分表之后,id 主键如何处理?(唯一性,排序等) 面试官心理分析 其实这是分库分表之后你必然要面对的一个问题,就是 id 咋生成?因为要是分成多个表之后,每个表都是从 1 开始累加,那肯定不对啊,需要一个全局唯一的 id 来支持,排序问题等.所以这都是你实际生产环境中必须考虑的问题. 面试题剖析 基于数据库的实现方案 数据库自增 id 这个就是说你的系统里每次得到一个 id,都是往一个库的一个表里插入一条没什么业务含义的数据,然后获取一个数据库自增的一个 id.拿到这个 id 之后再

jdbc-mysql基础 ResultSet getGeneratedKeys 插入一条字段并返回其主键

礼悟:    好好学习多思考,尊师重道存感恩.叶见寻根三二一,江河湖海同一体.          虚怀若谷良心主,愿行无悔给最苦.读书锻炼强身心,诚劝且行且珍惜. 数据.数据,命根就在数据.云计算.AI等技术,都是以数据为基础.操作数据库一定要谨慎小心.给最苦 这里的代码,看看就好,要有自己的判断.遇到抉择,要不耻上下问,三思而后行. javaSE:8                              mysql:5.7.14     mysql-connector-java:5.1.4

javaWeb_JDBC_JDBC获取数据库自动生成的主键值

JDBC_JDBC获取数据库自动生成主键值 1.意义: 在操作比较复杂的数据库表以及相关信息的时候,我们需要获取一条记录中的主键值,以便于别的业务逻辑操作该条记录,那么这一个时候 如果是数据库自己生成主键值,那么我们就有必要获取这一个主键值. 2.实现: 使用重载的 prepareStatement(sql, flag)来生成 PreparedStatement 对象,并调用ResultSet rs = preparedStatement.getGeneratedKeys(); 在 Result