數據新增獲取自增ID 【通過Mybatis】

      在寫代碼的時候,數據庫id字段設置爲自增,需要添加一條新的數據到數據庫,然而添加完之後,還需要獲取這條新加數據的id,用於其他業務。

數據庫中id爲自增:

 表中的數據:

 

  XML文件內容:

<insert id="insertSetting" parameterType="com.pig4cloud.pigx.earlywarning.entity.EwSetting"
                           useGeneratedKeys="true" keyProperty="id">
	INSERT INTO `workingspace`.`ew_setting` 
            (`id`,`deviceId`,`ewIconId`,`ewTypeId`,`ewLevelId`,`ewLevelName`,`name`,
             `delayTime`,`upgradeTime`,`isDisplay`,`enable`,`sendMail`,`sendMessage`,
             `createTime`,`updateTime`,`createUser`,`updateUser`,`delFlag`,`description`)
        VALUES
            (#{id},#{deviceId},#{ewIconId},#{ewTypeId},#{ewLevelId},#{ewLevelName},
             #{name},#{delayTime},#{upgradeTime},#{isDisplay},#{enable},#{sendMail},
             #{sendMessage},#{createTime},#{updateTime},#{createUser},#{updateUser},
             #{delFlag},#{description});
	</insert>

Mapper方法:

public interface EwSettingMapper{

	int insertSetting(EwSetting ewSetting);
}

實際調用代碼:

@Service
@AllArgsConstructor
public class EwSettingServiceImpl extends ServiceImpl<EwSettingMapper, EwSetting> implements EwSettingService {

    private final EwSettingMapper ewSettingMapper;

    public void saveSetting() {
        //new一個對象
        EwSetting ewv = new EwSetting();
        //隨便給這個對象設置幾個值
	    ewv.setEwLevelId(1L);
	    ewv.setEwIconId(1L);
	    ewv.setDeviceId(1L);
	    ewv.setEwTypeId(1L);
        if(ewSettingMapper.insertSetting(ewv) > 0){
	    	System.out.println("ewv的id爲:"+ewv.getId());
	    }
    }
}

輸出結果:

ewv的id爲: 5

 

      關於這兩個屬性的具體信息可參閱:Mybatis中文手冊

      說來慚愧,這還是我第一次看Mybatis的官方文檔,emm,沒看懂說的是什麼

       百度了一下,下面這段話覺得說的還蠻通俗易懂的 :

       Mybatis 配置文件 useGeneratedKeys 參數只針對 insert 語句生效,默認爲 false。當設置爲 true 時,表示如果插入的表以自增列爲主鍵,則允許 JDBC 支持自動生成主鍵,並可將自動生成的主鍵返回。

                                                                                                                                           ——來自  nininininiabc222

       需要注意的是,此時返回的主鍵是直接setter進了 ewSettingMapper.insertSetting(ewv) 中的ewv的,insertSetting方法的返回值依舊是受影響的行數,所以,執行了 insertSetting 操作後,可通過 Long id = ewv.getId(); 得到id的值。

       反正,新知識點 get√ ~~~~~

發佈了52 篇原創文章 · 獲贊 4 · 訪問量 2310
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章