我们使用Spring中的JdbcDaoSupport往Mysql中插入数据并返回主键代码,我们使用的mysql数据库,主键在数据库中设置为自增长:该类继承自JdbcDaoSupport,所以能直接使用getJdbcTemplate()
当我们数据库换成oracle数据库时,因为oracle数据库採用序列进行ID标识,我们改动对应的sql语句,其它不变:
String sql = "insert into tb_user (id,username,age,password) values(SEQ_ZB_USER.nextval,?,?,?)";
执行后它会抛出异常:oracle数据库的number类型不能转换为int类型
换成其它类型也不行,这是由于JdbcDaoSupport中的getJdbcTemplate()不正确oracle支持;
解决方法:继承Spring中的SimpleJdbcDaoSupport,JdbcDaoSupport能做的,SimpleJdbcDaoSupport基本也能完毕,所以继承后,使用其getSimpleJdbcTemplate()方法;
public int saveUser(String userName,int age,String password){
//设置參数集合,匹配sql语句中的參数
MapSqlParameterSource params=new MapSqlParameterSource();
params.addValue("userName", userName);
params.addValue("age", age);
params.addValue("password", password);
KeyHolder keyHolder = new GeneratedKeyHolder();
String sql = "insert into zb_user (id,username,age,password) " +
"values(SEQ_ZB_JC_PLAN.nex

文章讲述了在使用Spring的JdbcDaoSupport与MySQL数据库配合时,如何处理主键自增。当切换到Oracle数据库,由于其使用序列生成主键,导致问题。解决方案是改用SimpleJdbcDaoSupport的getSimpleJdbcTemplate(),通过NamedParameterJdbcOperations更新并获取主键,从而成功插入数据并返回主键。
最低0.47元/天 解锁文章
2460

被折叠的 条评论
为什么被折叠?



