id自增如何返回id的值

(一)第一种方式 当你把数据库表设置为自增Id时,这种新增不需要在输入id值。如何返回id值,就用到了useGeneratedKeys 和 keyProperty

 @RequestMapping(value="/insertUser",method=RequestMethod.POST)
 @ResponseBody
 public int insertUser() {
     User user1 = new User();
     user1.setUsername("234");
     user1.setUsersex(4);
     user1.setDegree(100.08);
     int count = userTestService.insertUser1(user1);
     System.out.println("共插入1条数据"+"userid值为"+user1.getUserid());
     return count;
    }

注意上述代码@ResponseBody 一定的加,不然报:

java.lang.IllegalArgumentException: Unknown return value type: java.lang.Integer

keyProperty=“userid” 中userid为主键

<insert id="insertUser1" useGeneratedKeys="true" keyProperty="userid">
        insert into richfit_myku(user_name,user_sex,degree)
        values(
        #{username}, #{usersex}, #{degree})
    </insert>
@Data
@TableName(value = "richfit_myku")
public class User implements Serializable {

    private int userid;
    private String username;
    private int usersex;
    private Double degree;
}

(二)第二种方式 selectKey 返回主键的值

有些数据库(如 Oracle )不提供主键自增的功能,而是使用序列得到 个值,然后将这个值赋给 id ,再将数据插入数据库。对于这种情况,可以采用另外 种方式:使用<selectKek>标签来获取主键的值,这种方式不适用于不提供主键自增功能的数据库,也适用于提供主键自增功能的数据库。

selectKey 标签 ke yColumn keyProperty 和上面 useGeneratedKeys 的用法含义相同 ,这 resultType 用于设置返回值类型order属性的设置和使用的数据库有关MySQL 数据库中, order 属性设置的值是 AFTER,因为当前记录的主键值在 insert 语句执行成功后才能获取 而在 Oracle 数据库中, order 的值要设置为 BEFORE ,这是因为 Oracle中需要先从序列获取值,然后将值作为主键插入到数据库中。

<insert id="insertUser1">
        insert into richfit_myku(user_name,user_sex,degree)
        values(
        #{username}, #{usersex}, #{degree})
        <selectKey keyColumn="userid" keyProperty="userid" resultType="int" order="AFTER">
       <!-- MySQL 中的 SQL 语句 SELECT LAST_ INSERT_ ID ()用于获
数据库中最后插入的数据的 ID-->
          select LAST_INSERT_ID()
        </selectKey>
    </insert>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值