@Nome da tabela
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)
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
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
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
fill indica se os dados devem ser preenchidos automaticamente.Quando
o objeto é armazenado nos dados, mybatisplus atribui automaticamente valores a determinados campos.
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
Crie um processador de preenchimento automático
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
2. Adicione a variável de membro version à classe de entidade e adicione @version
3. Gravar classe de configuração
teste
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
2. Crie uma nova classe de enumeração
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