1. 程式人生 > >spring boot使用通用mapper(tk.mapper) ,id自增和回顯等問題

spring boot使用通用mapper(tk.mapper) ,id自增和回顯等問題

最近專案使用到tk.mapper設定id自增,資料庫是mysql。在使用通用mapper主鍵生成過程中有一些問題,在總結一下。

1. UUID生成方式-字串主鍵

在主鍵上增加註解

 @Id
 @GeneratedValue(generator="UUID") 
 private String id;

bug—以上方式即可生成UUID,但是不能回顯,就是儲存之後不會返回id

解決方法:(1)增加一個配置類如下:

 @Configuration
public class TkMapperConfig {

    @Bean
    public MapperScannerConfigurer mapperScannerConfigurer
(){ MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer(); mapperScannerConfigurer.setBasePackage("com.xxxx.dao"); Properties propertiesMapper = new Properties(); //通用mapper位置,不要和其他mapper、dao放在同一個目錄 propertiesMapper.setProperty("mappers"
, "com.xxxx.Mapper"); propertiesMapper.setProperty("notEmpty", "false"); //主鍵UUID回寫方法執行順序,預設AFTER,可選值為(BEFORE|AFTER) propertiesMapper.setProperty("ORDER","BEFORE"); mapperScannerConfigurer.setProperties(propertiesMapper); return mapperScannerConfigurer; } }

(2).實體註解改為

        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY,generator = "select uuid()")
        private String id;

2. 整形自增方式

在主鍵上增加註解

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

bug—以上方式可生成ID自增,但是批量插入資料的時候,生成的主鍵都是同一個序列(比如2027),導致id重複

解決方法:修改註解

    @Id
    @GeneratedValue(generator = "JDBC")             
    private Long id;