Mybatis insert操作は自己成長のプライマリ・キーidを返す

2086 ワード

データを挿入すると、idが自動的に生成される可能性が高いので、挿入したばかりのidを返したい場合はどうすればいいのでしょうか.
mysqlデータでは、insertの下にselectKeyを追加して、返されるタイプと値を指定できます.
方法1:

    
     
        SELECT LAST_INSERT_ID() AS ID   
    
    insert into tb_content_category (id, parent_id, name, 
      status, sort_order, is_parent, 
      created, updated)
    values (#{id,jdbcType=BIGINT}, #{parentId,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR}, 
      #{status,jdbcType=INTEGER}, #{sortOrder,jdbcType=INTEGER}, #{isParent,jdbcType=BIT}, 
      #{created,jdbcType=TIMESTAMP}, #{updated,jdbcType=TIMESTAMP})
  

ここでresultTypeは、返されるタイプを表します.IDは、戻ってきた挿入したばかりのIDです
 
方法2:
mysqlデータではinsertの下にuseGeneratedKeys=「true」keyProperty=「id」を追加できます.

    
    insert into tb_content_category (id, parent_id, name, 
      status, sort_order, is_parent, 
      created, updated)
    values (#{id,jdbcType=BIGINT}, #{parentId,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR}, 
      #{status,jdbcType=INTEGER}, #{sortOrder,jdbcType=INTEGER}, #{isParent,jdbcType=BIT}, 
      #{created,jdbcType=TIMESTAMP}, #{updated,jdbcType=TIMESTAMP})
  

JAvaコード取得id
TbContentCategory record = new TbContentCategory();
		record.setParentId(parentId);
		record.setName(name);
		Date date = new Date();
		record.setCreated(date);
		record.setUpdated(date);
		record.setStatus(1);
		record.setSortOrder(1);
		record.setIsParent(false);

		TbContentCategoryMapper.insert(record);
		
		//insert   ,id    record  ,        
		Long id = record.getId();