Java MyBatis插入數據庫返回主鍵

問題

我們對做某一些特定需求功能的時候,常常需要用到數據庫主鍵,但是主鍵設置的是自動增長,所以添加的時候往往是獲取不到的,爲了解決這個問題,提供了兩種方法。

第一種(笨辦法)

解決辦法:先執行數據添加,添加完了之後再查詢出最後一天記錄就 是剛剛,取出主鍵

第二種

  1. sql.xml形式
    1. useGeneratedKeys 主鍵自動增長
    2. keyProperty 對應主鍵對象賦值的列
    3. keyColumn 數據庫中對應的主鍵字段
<insert id="id" useGeneratedKeys="true" keyProperty="id" parameterType="com.jianye.cloud.bean.Contract">
   INSERT INTO `t_contract` (`contract_number`, `url`, `short_url`, `amount_guaranteed`,`service_charge`, `first_company`,`first_name`,`first_call`,`first_email`,`first_qq`,`contract_content`,`add_content`, `second_company`, `contract_status`, `send_time`) 
    VALUES (#{contractNumber}, #{url}, #{shortUrl}, #{amountGuaranteed}, #{serviceCharge}, #{firstCompany},#{firstName}, #{firstCall}, #{firstEmail}, #{firstQq}, #{contractContent}, #{addContent}, #{secondCompany},#{contractStatus},now())
</insert>
2. 註解sql

添加
@Options(useGeneratedKeys = true, keyProperty ="id",keyColumn = "id")

  1. useGeneratedKeys 主鍵自動增長
  2. keyProperty 對應主鍵對象賦值的列
  3. keyColumn 數據庫中對應的主鍵字段
 /**
     * 添加合同
     * @param contract
     * @return
     */
    @Insert("INSERT INTO `t_contract` (`contract_number`, `url`, `short_url`, `amount_guaranteed`,`service_charge`, `first_company`,`first_name`,`first_call`,`first_email`,`first_qq`,`contract_content`,`add_content`, `second_company`, `contract_status`, `send_time`) " +
            "VALUES (#{contractNumber}, #{url}, #{shortUrl}, #{amountGuaranteed}, #{serviceCharge}, #{firstCompany},#{firstName}, #{firstCall}, #{firstEmail}, #{firstQq}, #{contractContent}, #{addContent}, #{secondCompany},#{contractStatus},now())")
    @Options(useGeneratedKeys = true, keyProperty = "id",keyColumn = "id")
    int addContract(Contract contract);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章