获取自动生成的主键

我们在数据库中设置主键的时候,一般都会进行设置主键自增策略,我们只需进行管理数据的重要内容,让一个存储我们信息的id设置为主键并且自增给我们的数据来提供一个唯一标识,但是我们之前在对数据库执行插入操作的时候,我们并不知道插入的这条数据在数据库中现在编号是几,为了能够使用这个id值,Mybatis给我们提供了如下方法



获取自动生成的主键

我们之前的插入方法,我们来进行修改,把结果进行打印:

    <insert id="insertEmp"  parameterType="MyEmp" >
        insert into emp (name,age,birthday,salary) values (#{name},#{age},#{birthday},#{salary})
    </insert>

测试代码:

    @Test
    public void testInsertEmp(){
        Emp emp = new Emp(null,"罗杰",40,new Date(),new BigDecimal(1000));
        SqlSession sqlSession = MybatisUtil.getSession();
        EmpMapper empMapper = sqlSession.getMapper(EmpMapper.class);
        empMapper.insertEmp(emp);
        sqlSession.commit();
        System.out.println(emp);
    }

结果:

这里是无法获取返回的id值的。

我们打开文档,查找映射文件的属性:

我们发现黄色框内三个属性只对insert 和 update有效,上面描述的还是有点抽象,简单来说就是:

useGeneratedKeys:就是让选择是否返回自动生成的主键,默认的是false,如果想要返回主键,那么就自定义为true

KeyProperty          : 就是让选择把获取的主键传递给传入的对象的那个属性。

keyColumn           :  让选择是从哪一列来获取一个自动生成的主键。比如我们是id,就把id传入。

现在更改代码:

    <insert id="insertEmp"  parameterType="MyEmp" useGeneratedKeys="true" keyProperty="id" keyColumn="id">
        insert into emp (name,age,birthday,salary) values (#{name},#{age},#{birthday},#{salary})
    </insert>

然后再次执行:

 

这三个属性对于Insert和update有用,但是一般对于更改操作,我们一般都是知道这条信息的一些值然后来进行更改,所以一般用这个功能比较少,对于insert操作来说是非常实用的。

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值