mybatis儲存成功返回主鍵不生效
阿新 • • 發佈:2018-12-19
mapper.xml配置如下:
<insert id="insertReturnId" parameterType="com.upincar.dms.service.carsource.entity.CarBaseBrand" keyProperty="id" useGeneratedKeys="true"> insert into car_base_brand (id, brand_name, brand_img_url, brand_factory_name, FIRST_NUM, remark ) values (#{id,jdbcType=INTEGER}, #{brandName,jdbcType=VARCHAR}, #{brandImgUrl,jdbcType=VARCHAR}, #{brandFactoryName,jdbcType=VARCHAR}, #{firstNum,jdbcType=VARCHAR}, #{remark,jdbcType=VARCHAR} ) </insert>
失敗的,呼叫測試如下:
@RequestMapping("/testSave") @SystemWebControllerLog(sysKey=SysConsts.CAR_BASE_ADD_KEY,SysTypeName=SysConsts.CAR_BASE_ADD_MSG,description=SysConsts.CAR_BASE_MSG) public Response testSave(HttpServletRequest request,@RequestParam Map<String,Object> paramMap) throws Exception{ CarBaseBrand newCarBaseBrand=new CarBaseBrand(); newCarBaseBrand.setBrandName("1"); newCarBaseBrand.setBrandFactoryName("1"); Integer id=carBaseBrandMapper.insertReturnId(newCarBaseBrand); return new Response(id); }
成功的,呼叫測試如下:
@RequestMapping("/testSave") @SystemWebControllerLog(sysKey=SysConsts.CAR_BASE_ADD_KEY,SysTypeName=SysConsts.CAR_BASE_ADD_MSG,description=SysConsts.CAR_BASE_MSG) public Response testSave(HttpServletRequest request,@RequestParam Map<String,Object> paramMap) throws Exception{ CarBaseBrand newCarBaseBrand=new CarBaseBrand(); newCarBaseBrand.setBrandName("1"); newCarBaseBrand.setBrandFactoryName("1"); Integer id=carBaseBrandMapper.insertReturnId(newCarBaseBrand); return new Response(newCarBaseBrand.getId()); }
失敗原因說明:
1、每次請求後獲取的id都是1,我仔細對比了別人的寫法,自己的沒有錯誤。
2、後來才發現,實體儲存成功後,返回的還是對資料庫產生影響的條數,影響了1條。
3、儲存成功後,實體的主鍵,已經更新到了實體中,沒儲存的時候是null,儲存成功後使用實體的get主鍵方法就能得到了
失敗的獲取方法:
Integer id=carBaseBrandMapper.insertReturnId(newCarBaseBrand);return new Response(id);
成功的獲取方法:
Integer result=carBaseBrandMapper.insertReturnId(newCarBaseBrand); return new Response(newCarBaseBrand.getId());