問題
我們對做某一些特定需求功能的時候,常常需要用到數據庫主鍵,但是主鍵設置的是自動增長,所以添加的時候往往是獲取不到的,爲了解決這個問題,提供了兩種方法。
第一種(笨辦法)
解決辦法:先執行數據添加,添加完了之後再查詢出最後一天記錄就 是剛剛,取出主鍵
第二種
- sql.xml形式
- useGeneratedKeys 主鍵自動增長
- keyProperty 對應主鍵對象賦值的列
- 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")
- useGeneratedKeys 主鍵自動增長
- keyProperty 對應主鍵對象賦值的列
- 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);