正常情况根据序列生成主键是这么写的
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY,generator = "select 序列名称.nextval from dual")
但是有一天我同事这样写不行了,我找遍了所有可能的问题
发现,它居然在执行新增语句后,再执行序列注入主键的查询,这。。。心态蹦了啊
解决办法:
在xxxApplication.java (就是自己的程序入口)
第一步: 注释调以前的@MapperScan("com.xxx.xxxx.mapper")
第二步:在xxxApplication.java 中增加一下方法,目的是在新增之前执行序列生成
@Bean
public MapperScannerConfigurer mapperScannerConfigurer(){
MapperScannerConfigurer configurer = new MapperScannerConfigurer();
// 修改为自己的mapper包路径
configurer.setBasePackage("com.xxx.xxxx.mapper");
Properties properties = new Properties();
// 在新增之前执行序列生成
properties.setProperty("order", "before");
configurer.setProperties(properties);
return configurer;
}