插入后返回主键

添加数据及主键返回

第一种

<!--void insertUser(User user);-->
<!--useGeneratedKeys: 表示该sql使用了自增的主键-->
<!--keyProperty: 将自增的主键的值传给,mapper接口实体类参数user中的某个属性-->
<insert id="insertUser" useGeneratedKeys="true" keyProperty="id">
    insert into user values(null,#{username},#{password})
</insert>
User user = new User(null,"xx","opefs");
mapper.insertUser(user);
System.out.println(user);
// User{id=6, username='xx', pasword='opefs'}

第二种

@Insert("insert into dish values(null,#{name},#{category_id},#{price},#{code}" +
        ",#{image},#{description},#{status},'0',#{create_time},#{update_time}," +
        "#{create_user},#{update_user},'0')")
@SelectKey(statement="select LAST_INSERT_ID()",keyProperty = "id",before = false,resultType = Long.class)
void save(dishdto dishdto);

// @SelectKey用在被@Insert@InsertProvider@Update@UpdateProvider注解的方法上。否则无效。
// 如果指定了@SelectKey,那么MyBatis会忽略由@Options所设置的生成主键。

// statement:将会被执行的SQL字符串数组
// keyProperty:将会被更新的参数对象的属性的值
// before:true或false指明SQL语句在插入语句的之前还是之后执行
// resultType:keyProperty的Java类型

第三种

@Insert("insert into login_ticket values(null,#{userId},#{token},#{status},#{expired})")
@Options(useGeneratedKeys = true, keyProperty = "id")
void insert(LoginToken loginToken);

mybatis批量插入

    @Insert("<script> " +
            "insert into dish_flavor values " +
            "<foreach collection = 'flavors' item = 'item' separator = ','> " +
            "(null,#{item.dish_id},#{item.name},#{item.value},#{item.create_time}," +
            "#{item.update_time},#{item.create_user},#{item.update_user},'0') " +
            "</foreach> " +
            "</script>")
    int save(@Param("flavors") List<dishflavor> flavors);

注意点:
1.@Param注解,对应 foreach循环接收的参数,必须写。
2.< script >标签,标记是JAVASCRIPT脚本,对 foreach语句进行解析(必须写)。
3.< foreach >标签,必须写
@Insert插入List集合
批量添加记录并返回各记录主键字段值

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值