使用Spring JdbcTemplate插入数据后,获取新插入数据的主键
public class DownloadExcelService{
@Autowired
private JdbcTemplate jdbcTemplate;
/**
* 插入上传文件信息
* @param loginUser
* @param ip
* @param fileName
* @param pcpc
* @param pcr
* @param pclx
* @param dir
*/
public Long insertUploadFileInfo(CurrentUser loginUser, String ip, String fileName, String pcpc, String pcr, String pclx, String dir) {
String insertUploadExcel = this.getXmlSql("insertUploadExcel");
// String sql = "insert into t_test_log(id,p_key,p_value)values(s_test_log_id.nextval,:p_key,:p_value)"
NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(jdbcTemplate);
GeneratedKeyHolder generatedKeyHolder = new GeneratedKeyHolder();
MapSqlParameterSource parameterSource = new MapSqlParameterSource();
parameterSource.addValue("USERID",loginUser.getUserid());
parameterSource.addValue("UPLOAD_IP",ip);
parameterSource.addValue("EXCEL_NAME",fileName);
parameterSource.addValue("EXCEL_PATH",dir);
parameterSource.addValue("PCPC",pcpc);
parameterSource.addValue("PCR",loginUser.getUsername());
parameterSource.addValue("PCLX",pclx);
//指定主键,特别要注意jdbc的版本,有的版本会报空指针异常ojdbc6.jar可以正常运行
namedParameterJdbcTemplate.update(insertUploadExcel,parameterSource,generatedKeyHolder,new String[]{"ID"});
//获取主键值
Number number = generatedKeyHolder.getKey();
Long id = number.longValue();
return id;
}
}