达梦jdbc踩的坑

返回
Author Avatar
钢翼
2020-12-30
编程
71

项目有一些用NamedParameterJdbcTemplate来进行数据插入的代码,写法如下

String insertSql = "insert into ...";
KeyHolder keyHolder = new GeneratedKeyHolder();
NamedParameterJdbcTemplate named=new NamedParameterJdbcTemplate(dataSource);
MapSqlParameterSource parameters = new MapSqlParameterSource();
parameters.addValue("xxx1","yyyy1");
parameters.addValue("xxx2","yyyy2");
named.update(insertSql,parameters,keyHolder,new String[]{"id"});
int newId = keyHolder.getKey().intValue();

当使用达梦jdbc时会报错。这时我们去掉update最后一个参数即可

named.update(insertSql,parameters,keyHolder);

在迁移的时候还发现有些sql语句group by 别名的报错。 这里得吐槽下mysql,select的列名别名居然可以进行group by,这得惯坏多少程序员,写的sql不标准,以后迁移数据库成本也高很多。

标准sql的执行顺序 先where 再group 再having 再select 后order。