MyBatis中添加一条数据如何获取数据主键

    数据库中设置了主键自增,在MyBatis中调用mapper接口中insert(Object obj)方法,在数据保存成功后并不能直接返回主键,这时候我们通过obj对象无法直接获得主键。可以使用SELECT LAST_INSERT_ID()语句来获得主键。

mapper.java如下:

    int insert(BaseCompany record);

mapper.xml配置如下:

  <insert id="insert" parameterType="com.shiningcity.company.pojo.BaseCompany">
    <selectKey keyProperty="pkid" order="AFTER" resultType="java.lang.Integer">
        SELECT LAST_INSERT_ID()
    </selectKey>
    insert into tb_base_company (PKID, COMPANY_CODE, COMPANY_NAME, 
      COMPANY_ADDRESS, FIRST_MANAGER_NAME, CERTIFICATE_CODE, 
      FIRST_MANAGER_TELEPHONE, GROUP_CODE, REGION_CODE
      )
    values (#{pkid,jdbcType=INTEGER}, #{companyCode,jdbcType=VARCHAR}, #{companyName,jdbcType=VARCHAR}, 
      #{companyAddress,jdbcType=VARCHAR}, #{firstManagerName,jdbcType=VARCHAR}, #{certificateCode,jdbcType=VARCHAR}, 
      #{firstManagerTelephone,jdbcType=VARCHAR}, #{groupCode,jdbcType=VARCHAR}, #{regionCode,jdbcType=VARCHAR}
      )
  </insert>

这样我们就可以直接通过insert()方法的参数对象来获得主键

    @Test
    public void testInsert() {
        //fail("Not yet implemented");
        BaseCompany company = new BaseCompany();
        company.setCompanyCode("com001");
        company.setCompanyName("企业001");
        companyService.insert(company);
        System.out.println(JSON.toJSON(company));
    }

company对象打印结果:

{"companyCode":"com001","pkid":98,"companyName":"企业001"}

注意:在批量插入语句中,SELECT LAST_INSERT_ID()只会返回第一条语句的主键。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值