zoukankan      html  css  js  c++  java
  • mysql数据库使用mybatis新增操作返回自增主键的值

    在使用mysql数据库做一些新增数据业务时,比如说一张表有个自增主键id,在新增一条数据后想要返回新增的这条数据的id值用于后续业务使用,在使用mybatis做持久化管理,xml中可以使用如下方式:

    <insert id="insertClientLog" parameterType="TClientLog">
        <selectKey keyProperty="serialNo" order="AFTER" resultType="integer">
          select LAST_INSERT_ID()
        </selectKey>
        insert into pub_tclientlogfile(
          operate_date,
          operate_time,
          remark,
          del_status
        ) values (
          #{operateDate},
          #{operateTime}
          #{remark},
          #{delStatus}
        )
    </insert>

     说明:

      使用mysql的LAST_INSERT_ID()方法获取插入记录的主键,设置在插入数据后,即order属性设置为after,使用select LAST_INSERT_ID()查询并返回新插入数据的主键值。

      keyProperty:将查询到的主键值设置到对应实体类的主键属性字段。

      order:<selectKey> 标签内的sql语句相对于insert语句的执行顺序配置,可以为BEFORE、AFTER,AFTER表示select LAST_INSERT_ID()这个语句将在insert语句之后执行。 

    或者使用如下方式:

    <insert id="insertClientLog" useGeneratedKeys="true" keyProperty="serialNo" parameterType="TClientLog">
        insert into pub_tclientlogfile(
          operate_date,
          operate_time,
          remark,
          del_status
        ) values (
          #{operateDate},
          #{operateTime}
          #{remark},
          #{delStatus}
        )
    </insert>

     说明:  

      useGeneratedKeys:设置是否使用jdbc的getGenereatedKeys方法获取主键并赋值到keyProperty设置的属性。

      keyProperty:将查询到的主键值设置到对应实体类的主键属性字段。

    对应mapper方法:

    void insertClientLog(TClientLog clientLog);

    使用时使用入参的getXxx方法来获取对应的结果值:

     //调用插入方法
    clientLogMapper.insertClientLog(clientLog);
    //使用入参的getXxx方法返回结果值
    System.out.println("serialNo:" + clientLog.getSerialNo());

    结果如下图所示:

  • 相关阅读:
    char *p = "abcdefg"; p[0] = p[1]出错
    最近在 OS-10.9下配置opencv, cgal, latex, qt, pillow
    Python文件操作
    Python字典和集合
    Python目录操作
    python处理中文(待补充)
    混合高斯模型
    随机生成某些稀疏矩阵
    matlab注释
    C#中int,string,char[],char的转换(待续)
  • 原文地址:https://www.cnblogs.com/kingsonfu/p/12877043.html
Copyright © 2011-2022 走看看