Mybatis 插入数据的同时获取主键的方式

9 篇文章 0 订阅
3 篇文章 0 订阅

1.继承 Mapper, MySqlMapper

在实体类主键加上注解 @Id 和 @GeneratedValue(strategy = GenerationType.IDENTITY) ,在项目中不建议继承这两个类,不过微服务中,单标操作,使用这个 api 比较快捷,示例如下:

    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

2.xml配置

配置的方式一般有两种:

2.1 在标签属性上添加 useGeneratedKeys(是否是自增长,必须设置 true) 和 keyProperty(主键属性名称,对应实体类) 、keyColumn(主键字段名称,对应数据库表字段名称)

    <insert id="insertUser" parameterType="com.dao.model.User" useGeneratedKeys="true" keyProperty="id" keyColumn="id">
    
        INSERT INTO user(name,sex) VALUES(#{name},#{sex})
    
    </insert>

2.2 通过查询返回主键,其中 resultType 是主键返回类型,keyProperty 是实体类主键属性,order 是获取主键方式,AFTER 指插入之后执行,下面 sql 就是查询最后一个主键。

    <insert id="insertUser" parameterType="com.dao.model.User" >
    
        <selectKey resultType="java.lang.Long" keyProperty="id" order="AFTER" >
            SELECT LAST_INSERT_ID()
        </selectKey>
        
        INSERT INTO user(name,sex) VALUES(#{name},#{sex})
    
    </insert>

3.注解方式

useGeneratedKeys(是否是自增长,必须设置 true) 和 keyProperty(主键属性名称,对应实体类) 、keyColumn(主键字段名称,对应数据库表字段名称)

    
    @Insert("INSERT INTO user(name,sex) VALUES(#{user.name},#{user.sex})")
    @Options(useGeneratedKeys=true, keyProperty="user.id",keyColumn="id"  )
    public int insertUser(@Param("user") User user);

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值