@SelectKey

@SelectKey

  • 主要是用于在进行sql语句的操作时,将一些数据查询出来放入到对象的字段中。即有时候新增一条数据不仅仅知道成功就行了,后面的逻辑可能还需要这个新增的主键,这时候可以避免再次查询数据库。

  • 在Mybatis中是为了解决Insert数据时不支持主键自动生成的问题。

属性描述
keyProperty表示查询结果赋值给代码中的哪个对象,一般是赋值给对象的某个属性
keyColumn表示将查询结果赋值给数据库表中哪一列
resultType填入 keyProperty 的 Java 类型
before可以设置为 true 或false。要运行的SQL语句,before=true表示插入之前进行查询,可以将查询结果赋给keyProperty和keyColumn,赋给keyColumn相当于更改数据库。before=false表示先插入,再查询,这时只能将结果赋给keyProperty。
statement执行语句

1. 查询最后一次插入的主键id,将其赋值给对象id

@SelectKey(statement="SELECT last_insert_id", keyProperty="id", before=false, resultType=Long.class)

2. 执行查询语句,将结果赋值给对象的其他成员属性

@Insert({
        "insert into `submit` (id, hand_expert_id, ",
        "receive_expert_id, mission_id, ",
        "pathology_number, start_time, ",
        "status, logic_deletion)",
        "values (#{id,jdbcType=BIGINT}, #{handExpertId,jdbcType=INTEGER}, ",
        "#{receiveExpertId,jdbcType=INTEGER}, #{missionId,jdbcType=INTEGER}, ",
        "#{pathologyNumber,jdbcType=VARCHAR}, #{startTime,jdbcType=TIMESTAMP}, ",
        "#{status,jdbcType=TINYINT}, #{logicDeletion,jdbcType=TINYINT})"
    })
    @SelectKey(statement="SELECT mission_id from submit where id = last_insert_id()", keyProperty="missionId", before=false, resultType=Long.class)
    int insert(Submit record);
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值