1. 程式人生 > >mybatis儲存成功返回主鍵不生效

mybatis儲存成功返回主鍵不生效

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());