当前位置: 首页 > news >正文

MyBatis 获取插入数据后的自增 ID 值

1.说明

<insert>标签中设置useGeneratedKeys="true"keyProperty="id",MyBatis 会自动将自增 ID 赋值给传入参数对象的对应属性。

2.案例说明

2.1.数据传输层

RpCompanyconfigMapper.xml,设置useGeneratedKeys="true" keyProperty="companyId"

    <insert id="insertRpCompanyconfig" parameterType="RpCompanyconfig" useGeneratedKeys="true" keyProperty="companyId">insert into rp_companyconfig<trim prefix="(" suffix=")" suffixOverrides=","><if test="companyName != null">company_name,</if><if test="companyCode != null">company_code,</if><if test="createBy != null">create_by,</if><if test="createTime != null">create_time,</if><if test="updateBy != null">update_by,</if><if test="updateTime != null">update_time,</if><if test="remark != null">remark,</if></trim><trim prefix="values (" suffix=")" suffixOverrides=","><if test="companyName != null">#{companyName},</if><if test="companyCode != null">#{companyCode},</if><if test="createBy != null">#{createBy},</if><if test="createTime != null">#{createTime},</if><if test="updateBy != null">#{updateBy},</if><if test="updateTime != null">#{updateTime},</if><if test="remark != null">#{remark},</if></trim></insert>

 2.2 数据访问层类

public interface RpCompanyconfigMapper

    public int insertRpCompanyconfig(RpCompanyconfig rpCompanyconfig);

2.3.服务层接口类

public interface IRpCompanyconfigService 

    public int insertRpCompanyconfig(RpCompanyconfig rpCompanyconfig);

2.4.服务层实现类

@Service
public class RpCompanyconfigServiceImpl implements IRpCompanyconfigService 

     */@Overridepublic int insertRpCompanyconfig(RpCompanyconfig rpCompanyconfig){rpCompanyconfig.setCreateTime(DateUtils.getNowDate());int ttt=rpCompanyconfigMapper.insertRpCompanyconfig(rpCompanyconfig);return ttt;}

3.效果,查看companyId

4.扩展

方法二:使用 selectKey 标签(适用于不支持自动返回主键的数据库)

对于不支持自动返回主键的数据库(如 Oracle),可以使用<selectKey>标签获取自增 ID。

xml

<insert id="insertUser" parameterType="User"><selectKey keyProperty="id" resultType="long" order="AFTER">SELECT LAST_INSERT_ID()</selectKey>INSERT INTO user (username, email)VALUES (#{username}, #{email})
</insert>

order="AFTER"表示在 INSERT 语句执行后执行 SELECT LAST_INSERT_ID ()。

方法三:通过注解方式(Java 注解配置)

如果你使用 Java 注解而非 XML 配置,可以这样写:

@Insert("INSERT INTO user (username, email) VALUES (#{username}, #{email})")
@Options(useGeneratedKeys = true, keyProperty = "id")
int insertUser(User user);

使用 @Options 注解设置 useGeneratedKeys 和 keyProperty 属性。

注意事项

  1. keyProperty:指定实体类中对应的主键属性名。
  2. resultType:指定返回主键的类型。
  3. order 属性
    • AFTER:适用于 MySQL 等支持自动生成主键的数据库。
    • BEFORE:适用于 Oracle 等需要先获取序列值的数据库。

相关文章:

  • 力扣面试150题--除法求值
  • [特殊字符] 深入理解 Linux 内核进程管理:架构、核心函数与调度机制
  • 提高Python编程效率的工具推荐
  • 工业生产设备机械滑台:讲述用途及性能
  • 前端杂货铺——TodoList
  • 港科大快手提出统一上下文视频编辑 UNIC,各种视频编辑任务一网打尽,还可进行多项任务组合!
  • win11系统 Docker Desktop 突然提示Docker Engine stopped解决情况之一
  • 利用frp和腾讯云服务器将内网暴露至外网(内网穿透)
  • 《真假信号》速读笔记
  • 微服务架构的性能优化:链路追踪与可观测性建设
  • 头像上传功能的实现
  • btstack协议栈---Ubuntu驱动CSR8510 USB Dongle
  • 八、【ESP32开发全栈指南:UDP客户端】
  • 【强化学习】——04Model-Based RL
  • 运维_集运维linu自动化运维和部署
  • 会计 - 合并4 - 或有对价的会计处理
  • Python基于Django的文件销毁系统【附源码、文档说明】
  • ubuntu的虚拟显示器安装
  • Vue具名插槽
  • FirmAE安装-重新写
  • 网站建设最贵多少钱/重庆seo外包平台
  • 凡科网站免费注册/广告传媒公司经营范围
  • 建设部网站首页督办案件/郑州seo培训
  • 四川做网站设计哪家好/灰色关键词怎么做排名
  • wordpress 素材网站模版/推广策划方案怎么做
  • 汉阴做网站/国外域名注册网站