nullではないクエリ結果のフィールドの値をnullに更新したいのですが(データベース設計ではnullにすることができます)、
結果としてフィールドの更新に失敗し、クエリ結果は引き続き更新方法
解決策
1.グローバルフィールド戦略を設定する
構成ファイルで、次のように戦略を変更できます。
#properties文件格式:
mybatis-plus.global-config.db-config.field-strategy=ignored
#yml文件格式:
mybatis-plus:
global-config:
#字段策略 0:"忽略判断",1:"非 NULL 判断",2:"非空判断"
field-strategy: 0
これはグローバル構成であり、すべてのフィールドで判断が無視されます。一部のフィールドを変更したくないが、値が渡されたときに渡されない場合、それらはnullに更新され、他のビジネスデータの正確性に影響を与える可能性があります。
2.フィールドに個別のフィールド戦略を設定します
特定の状況に応じて、更新が必要なフィールドの検証アノテーションを調整します。たとえば、空でないことを確認します。
@ TableField(strategy = FieldStrategy.NOT_EMPTY)この場合、次のように、nullに更新する必要があるフィールドに無視戦略を設定するだけで済みます。
上記の方法を使用すると、このように処理する必要のあるフィールドが多数ある場合、各フィールドに注釈を追加する必要がありますが、これは少し面倒に思えます。
次に、フィールドに注釈を追加せずに正常に更新できる3番目の方法の使用を検討できます。
3. UpdateWrapperを使用して更新します(フィールドが多すぎる場合は、さらに書き込むことができます)
mybatis-plusでは、updateByIdメソッドに加えて、updateメソッドも提供されています。updateメソッドを直接使用して、フィールドをnullに設定することもできます。