mybatis-plus idプライマリキー生成ピット


mybatis-plus idプライマリキー生成ピット
  • 簡単な説明
  • エラー
  • ソリューション1
  • 1. idフィールドタイプ
  • の変更
  • 2. データベースidフィールドタイプ
  • の調整
  • ソリューション2
  • 注釈
  • を追加
  • その他`type`タイプ紹介
  • 簡単な説明mybatis-plusは、パッケージするかどうかにかかわらず、idをエンティティオブジェクトに自動的に挿入するため、予期せぬ事態が発生することがあります.
    デフォルトでは、長い数字の文字列が生成されます(符号化によってはアルファベットで終わる可能性があります).
    エラー
    ested exception is org.apache.ibatis.reflection.ReflectionException: Could not set property 'id' of 'class com.xxx' with value '1110423703487479810' Cause: java.lang.IllegalArgumentException: java.lang.ClassCastException@14041406
    
    
    

    大体id 1110423703487479810が自動的に生成されるため、integerに入れられない
    ソリューション1
    1.idフィールドタイプの変更
    idフィールドタイプをlongに変更することで、生成するidに十分なビット数を入れることが保証される.
    2.データベースidフィールドタイプの調整
    データベースのidフィールドの長さ(20ビットに変更)
    ソリューション2id自増を使用するには、mybatis-plusというidで生成された機能をオフにする必要があります.
    注記の追加idフィールドに次の注記を追加すればよい
     @TableId(value = "id",type = IdType.AUTO)
    

    その他のtypeタイプの紹介
  • AUTO:AUTO(0,「データベースID自増」),
  • INPUT:INPUT(1,「ユーザ入力ID」,
  • ID_WORKER : ID_WORKER(2,「グローバル一意ID」),
  • UUID:UUID(3,「グローバル一意ID」)
  • NONE:NONE(4、「このタイプはプライマリ・キー・タイプが設定されていない」)、
  • ID_WORKER_STR : ID_WORKER_STR(5,「文字列グローバル一意ID」);