新增数据返回主键的问题

1、表结构

CREATE TABLE `user` (
  `user_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT ‘用户自增id‘,//必须设置为自增主键
  `user_name` varchar(64) NOT NULL COMMENT ‘用户名‘,
  `user_contactor` varchar(32) DEFAULT NULL COMMENT ‘联系人‘,
  `user_phone` varchar(16) DEFAULT NULL COMMENT ‘联系电话‘,
  `status` varchar(2) DEFAULT ‘1‘ COMMENT ‘状态  0禁用  1正常‘,
  `create_user` varchar(16) DEFAULT NULL COMMENT ‘创建人‘,
  `create_date` datetime DEFAULT NULL COMMENT ‘创建时间‘,
  `last_modify_user` varchar(16) DEFAULT NULL COMMENT ‘最近修改信息人‘,
  `last_modify_date` datetime DEFAULT NULL COMMENT ‘最后修改时间‘,
  PRIMARY KEY (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=‘用户信息表‘;

2、mapper.xml代码

  第一种方式

<insert id="saveUser" parameterType="com.mysome.UserDTO" useGeneratedKeys="true" keyProperty="userId" keyColumn="user_id">
        INSERT INTO user(
        user_name, user_contactor, user_phone, status,
        create_user,create_date,last_modify_user,last_modify_date
        )
        VALUES (
        #{userName}, #{userContactor},#{userPhone}, #{status},
        #{createUser},#{createDate},#{lastModifyUser}, #{lastModifyDate}
        )
</insert>

  第二种方式

<insert id="saveUser" parameterType="com.mysome.UserDTO">
        INSERT INTO user(
        user_name, user_contactor, user_phone, status,
        create_user,create_date,last_modify_user,last_modify_date
        )
        VALUES (
        #{userName}, #{userContactor},#{userPhone}, #{status},
        #{createUser},#{createDate},#{lastModifyUser}, #{lastModifyDate}
        )
        <selectKey resultType="java.lang.Long" keyProperty="userId" order="AFTER">
            SELECT LAST_INSERT_ID()
        </selectKey>
</insert>

3、dao层代码

  int saveUser(UserDTO user);  

  进行保存操作后,返回的主键值就保存在参数user的userId中,而saveUser方法返回的则是保存操作返回的影响行数,成功则为1,失败为0。

  

原文地址:https://www.cnblogs.com/yiyibinbin/p/9468238.html

时间: 2024-10-08 08:13:37

新增数据返回主键的问题的相关文章

jdbc:mysql和oracle插入一条数据返回主键

package org.sin.common.dao; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import or

使用sqlite保存数据返回主键

/// <summary> /// 返回insert后的主键值 /// </summary> /// <param name="SQLString"></param> /// <param name="para"></param> /// <returns></returns> public static int ExecuteSql(string SQLString,

解决getJdbcTemplate往oracle数据库中插入数据返回主键出错问题

我们使用Spring中的JdbcDaoSupport往Mysql中插入数据并返回主键代码,我们使用的mysql数据库,主键在数据库中设置为自增长:该类继承自JdbcDaoSupport,所以能直接使用getJdbcTemplate() public int saveUser(String userName,int age,String password){ getJdbcTemplate().update(new PreparedStatementCreator() { public Prepa

sql新增后返回主键

对于刚学的人来说有点帮助,新增后返回主键有两种方法: 1,返回自增的主键: 1 INSERT INTO 表名 2 (字段名1,字段名2,字段名3,…) 3 VALUES 4 (值1,值2,值3,…) 5 SELECT @@IDENTITY 2,返回主键也可以返回别的字段看需要:inserted.id这里的id可以是其他字段就是一个字段名,比如还可以返回inserted.name 1 INSERT INTO 表名 2 (字段名1,…) 3 OUTPUT inserted.id 4 VALUES 5

MyBatis框架——mybatis插入数据返回主键(mysql、oracle)

向数据库中插入数据时,大多数情况都会使用自增列或者UUID做为主键.主键的值都是插入之前无法知道的,但很多情况下我们在插入数据后需要使用刚刚插入数据的主键,比如向两张关联表A.B中插入数据(A的主键是B的外键),向A表中插入数据之后,向B表中插入数据时需要用到A的主键. 比如添加一个用户,同时返回插入用户后得到的用户id: /** * 添加用户信息 * @param user * @throws Exception */ public int insertUser(User user) thro

解决mybatis3添加数据返回主键

最近项目用到插入记录后,根据生成的主键,再做其他操作,但是mybatis返回的是影响的行书,网上搜,大部分是如下形式 <insert id="add" parameterType="..." useGeneratedKeys="true" keyProperty="id"> ... </insert> 此种用法仅限于像mysql,sqlserver这样主键有自增功能的数据库,但是oracle不行. 咱也

Mybatis插入数据返回主键ID

<insert id="add" parameterType="com.dsa.core.base.model.ProductSync">        insert into tm_sync_product(            <if test="productId!=null">product_id,</if>            <if test="mainLimit!=null&q

Mybatis配置插入数据返回主键ID

需要在insert方法中添加 <insert id="insertSelective" parameterType="com.midou.ott.model.MDActivity" useGeneratedKeys="true" keyProperty="id"> 加上上面红色部分,keyProperty中的id,是MDActivity对象的中的Id 使用时直接从MDActivity对象中获取到ID

IBatisNet:让insert操作返回新增记录的主键值

项目引用ibatis包: IBatisNet.Common.dll --文件版本1.6.2.0 IBatisNet.DataAccess.dll IBatisNet.DataMapper.dll 项目目录结构: 项目中使用ibatis做数据访问层已经有好长时间了.开发小组成员反映ibatis的insert操作返回的结果是null,这一点很是不爽. 其实,大家都是希望能够把新增记录的主键值返回出来. 上上周,大家有反编译ibatis的包,查看其实现原理,后来,又尝试其他方法,都没能给实现这个功能.