mapper.xml配置如下:
<insert id="insertReturnKey" parameterType="com.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.insertReturnKey(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");
carBaseBrandMapper.insertReturnKey(newCarBaseBrand);
return new Response(newCarBaseBrand.getId());
}
失败原因说明:
1、每次请求后获取的id都是1,我仔细对比了别人的写法,自己的没有错误。
2、后来才发现,实体保存成功后,返回的还是对数据库产生影响的条数,影响了1条。
3、保存成功后,实体的主键,已经更新到了实体中,没保存的时候是null,保存成功后使用实体的get主键方法就能得到了
失败的获取方法:
Integer id=carBaseBrandMapper.insertReturnKey(newCarBaseBrand);
return new Response(id);
成功的获取方法:
carBaseBrandMapper.insertReturnKey(newCarBaseBrand);
return new Response(newCarBaseBrand.getId());