Explicação detalhada das anotações comuns no MyBatis-Plus

@Nome da tabela

abb436bf7018e2b45cbe9879d1f34da6.png

Chave primária @TableId
exclusiva

Por exemplo, o campo da tabela nos dados é id

Mas a classe da entidade é userId

Então você precisa colocar esta anotação no userId

uso

Definir o nome do campo de chave primária do mapeamento de valor de mapeamento de chave primária

type define a estratégia de geração de chave primária para o tipo de chave primária (os circulados são importantes)

8d46e6c6d9fc4626f8290dd269036b85.png

f9bd61c7e0bac5058fdc42408c133b51.png

1. Incremento automático do banco de dados AUTO.
Os desenvolvedores não precisam atribuir valores. Eles incrementarão automaticamente +1 com base no valor máximo de ID na tabela atual.

Se você atribuir o valor manualmente, ainda deverá usar o valor máximo + 1 no id do banco de dados para atribuir o id.


2 Gerar chaves primárias automaticamente usando o algoritmo floco de neve NONE.
Ao usá-lo com novas adições, é preciso prestar atenção ao comprimento da chave primária. Porém, em 3.20, é adotado o valor máximo deste campo + 1.

1. Altere o tipo de dados de int para long

2. O comprimento da tabela do banco de dados precisa ser alterado

Você precisa prestar atenção ao comprimento gerado, caso contrário um erro será relatado.

Causado por: org.apache.ibatis.reflection.ReflectionException:
 Não foi possível definir a propriedade 'id' de 'class com.lin.mybatisplus.pojo.User'
 com valor '1289924709438889985' Causa: java.lang.IllegalArgumentException: 
 tipo de argumento incompatível
então Você também precisa modificar o tipo de dados antes de salvá-los.


3 O desenvolvedor atribui INPUT manualmente.
Se o id não receber um valor durante a operação de inserção, o valor armazenado no banco de dados será 0 (longo).

O banco de dados geralmente usa o método de incremento automático do ID para processar o valor do número atual do banco de dados + 1

Se um valor for fornecido, use o valor fornecido


4 ASSIGN_ID
é equivalente a ID_ WORKER(3), ID_ WORKER STR(3),

Usar mp para atribuir valores automaticamente usa o algoritmo floco de neve, mas em 3.20, o valor máximo do campo + 1 é usado.

5 ASSIGN_ID
é equivalente a UUID

O tipo de chave primária deve ser do tipo String e o UUID será gerado automaticamente para atribuição.

O design do campo do banco de dados precisa ser considerado. O tipo int no banco de dados não pode ser salvo, mas como a chave primária é incrementada automaticamente, se você quiser modificar o tipo int para um tipo varchar, será necessário remover a chave primária Incremento automático.


Uso de campo de chave não primário @TableField

Por exemplo, o campo na tabela nos dados é nome

Mas a classe da entidade é userName

3c2a34ae327a164fa0f94d476722e1ef.png

Então você precisa colocar esta anotação em userName


Mapeamento de nomes de campos de mapeamento de valores de campos-chave não primários

exist indica se é um campo do banco de dados.
Ao fazer VO DTO, muitas vezes consultamos alguns campos que não estão no banco de dados. Se eles não estiverem rotulados

4d56078ee21c9c9624673e147ea402eb.png

Em seguida, a consulta reportará um erro (se a alteração da face do membro na classe da entidade não tiver um campo correspondente no banco de dados, pode ser considerada a mesma)

Precisa ser definido como falso


select indica se deve consultar este campo
e não participa da consulta e retorna nulo

2239b8ef52590d7659c2f5198a031d51.png

fill indica se os dados devem ser preenchidos automaticamente.Quando
o objeto é armazenado nos dados, mybatisplus atribui automaticamente valores a determinados campos.

7a2dc0c6a9d40b27a36b67b5a5c1b48b.png

Cenários de aplicação

create_time update_time

Por exemplo, o horário de registro e o horário de modificação são basicamente utilizados por todas as tabelas.A implementação consiste em obter o tempo e economizá-lo.

Mas é irritante

Então deixe o mp fazer isso (faça a seguinte configuração e precise criar um processador)


DEFAULT – não processado por padrão

INSERT --Preencha os campos ao inserir (ao adicionar pela primeira vez)

INSERT_UPDATE --Preenche os campos ao inserir e atualizar

(A atualização mais recente significa que tanto a inserção quanto a atualização foram satisfeitas)

UPDATE --Preencher campos ao atualizar

c758820ba62330fc63df75cc86180d05.png
Crie um processador de preenchimento automático

35271fc1ebe813d8d9bfd69b98b5a708.png
teste



Operação de modificação principal de bloqueio otimista da tag @Version

-Evitar que os dados sejam manipulados repetidamente

-Evitar que dois threads operem os mesmos dados ao mesmo tempo para garantir a segurança dos dados

princípio:

Marque o bloqueio otimista para garantir a segurança dos dados por meio do campo de versão. Ao modificar os dados,

A versão será usada como condição e a modificação só será bem-sucedida quando a condição for atendida.

versão=1

Tópico 1: atualizar ... definir versão = 2 onde versão = 1

Tópico 2: atualizar ... definir versão = 2 onde versão = 1

explicar:

Se algum thread operar com sucesso e a versão for alterada para 2, o outro thread falhará na execução.

Configuração do ambiente:

1. Adicione um campo de versão ao banco de dados com um valor padrão de 1

eaca6eb425a8eb608fa9e2103ad90ac7.png
2. Adicione a variável de membro version à classe de entidade e adicione @version

b2ebf3887b42c71a0bcba7e4b7a90b16.png
3. Gravar classe de configuração

e2465166af969ac4037088ae81bf384f.png

teste

13122c0d004e9270eb557f76e9dee5ed.png

Modifique a situação ao mesmo tempo - se estiver interessado, você pode tentar


@EnumValue
é uma anotação de classe de enumeração geral que mapeia campos de banco de dados para variáveis ​​de membro de tipo de enumeração de classes de entidade.

Conscientização: Transforme a enumeração em uma variável de membro e mapeie-a para o campo do banco de dados e encontre o objeto correspondente à enumeração com base no valor do campo do banco de dados

1. Adicione campo de status ao banco de dados

56c31d15c6c4dd7b2937974198f0e04c.png
2. Crie uma nova classe de enumeração

65cd92dbe0d610c086c7e477bd7f4b25.png
Adicionando campos - observe que eles devem ser mapeados com campos do banco de dados


Configure a verificação do pacote de enumeração no arquivo de configuração
@TableLogic

Lápide do mapa

Anotações comumente usadas
@TableName: anotar nomes de tabelas de dados

@TableId: identificador de chave primária da tabela

@TableId(valor = “id”, tipo = IdType.AUTO): automático

@TableId(value = “id”, type = IdType.ID_WORKER_STR): tipo de string de ID exclusivo global distribuído

@TableId(value = “id”, type = IdType.INPUT): Digite você mesmo

@TableId(value = “id”, type = IdType.ID_WORKER): tipo inteiro longo de ID exclusivo global distribuído

@TableId (valor = “id”, tipo = IdType.UUID): string UUID de 32 bits

@TableId(valor = “id”, tipo = IdType.NONE): sem estado

@TableField: identificador do campo da tabela

@TableField(exist = false): Indica que o atributo não é um campo da tabela do banco de dados, mas deve ser utilizado.

@TableField(exist = true): Indica que a propriedade é um campo de tabela do banco de dados.

@TableField(condition = SqlCondition.LIKE): Indica que esta propriedade pode ser pesquisada de forma difusa.

@TableField(fill = FieldFill.INSERT): Anote o campo de preenchimento e a parte da estratégia do gerador também pode ser configurada!

@FieldStrategy:

@FieldFill

@Version: anotações e tags de bloqueio otimistas

@EnumValue: passa anotação de classe de enumeração

@TableLogic: anotação de processamento lógico do campo da tabela (exclusão lógica)

@SqlParser: anotação de inquilino
 

Acho que você gosta

Origin blog.csdn.net/qq_43012298/article/details/118362066
Recomendado
Clasificación