项目用的是oracle结合mybatise,可能是受Mysql的影响过深,我在上层(contoller层)获取用这种方式
select
nvl(max(ID)+1,1) from EDSP_CLIENT_KEY_CODE
生成的id时都用了这样的方式:
int id=edspClientKeyCodeService.newUpdateOrAdd(company);
这是不对的!!!这个返回值是个负数,不是真正的id值
正确的方式!!!log.info(“保存的id值为:”+company.getId());
要通过Object.getId()的方式去获取!!!!!!2次了555~~~~
补充一点即使在dao中返回的值是void还是能通过对像获取id值
@Override
public void newUpdateOrAdd(EdspClientKeyCode clientKeyCode) {
EdspClientKeyCode obj=getSqlSession().selectOne(“EdspClientKeyCodeMapper.getCompanyById”,clientKeyCode.getId());
if(obj==null){
//新增
getSqlSession().insert(“EdspClientKeyCodeMapper.insertSelective”, clientKeyCode);
}else{
//更新
getSqlSession().update(“EdspClientKeyCodeMapper.updateSelective”, clientKeyCode);
}
}