Java获取自增主键ID值

附注:相信很多小伙伴在学习mybatis的时候,会有疑问,在插入数据后,怎么获取主键的id值,后续利用这个ID值,应用在其他方面,比如前端。本文根据如何获取自增主键ID值,提出相应的解决办法。

背景:

在开发过程中,我们有时会用到自增主键的值来进行一些操作,但是当主键id是自增的情况下,添加一条记录时,其主键id是不能使用的,发现主键id的值为null,应该如何解决呢?

解决方案:useGeneratedKeys=”true” keyProperty=”id”

xml文件:

    <insert id="insertUser" useGeneratedKeys="true" keyProperty="id">
        insert into t_user values (null,#{username}, #{password}, #{age}, #{sex}, #{email})
    </insert>

MyBatis层: 

package com.mapper;

import com.pojo.User;

import java.util.List;
import java.util.Map;

public interface SelectMapper {
        void insertUser(User user);
}

Service层:
 

 @Test
    public void insertUser() throws Exception{
        InputStream resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        SqlSession sqlSession = sqlSessionFactory.openSession(true);
        SelectMapper selectMapper = sqlSession.getMapper(SelectMapper.class);
        User user = new User(null, "ton", "123", 23, "男", "123@321.com");
        selectMapper.insertUser(user);
        System.out.println(user);
    }

useGeneratedKeys=”true” 

含义:设置是否使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty设置的领域模型属性中。Mybatis 配置文件 useGeneratedKeys 参数只针对 insert 语句生效,默认为 false。当设置为 true 时,表示如果插入的表以自增列为主键,则允许 JDBC 支持自动生成主键,并可将自动生成的主键返回,通过这个设置可以解决在主键自增的情况下通过实体的getter方法获取主键

另外,要注意的是,上面返回的主键是会映射到原来实体类中的,实体类中的参数会自动填充id 属性(由 keyProperty=“id” 指定),所以我们需要的id值绝不是sql注入返回的id值,因为sql注入返回的是受影响的行数。

keyproperty指明数据库中返回的主键id给实体类中的哪个属性

注意:这两个属性主要是在主键是自增的情况下,添加成功后可以直接使用主键值,其中keyProperty的值是对象的属性值不是数据库表中的字段名

看到这了,还不能点个赞吗?呜呜呜~

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值