Índice
Anotações comuns do Mybatis-Plus
Anotações comuns do Mybatis-Plus
1. @NomeTabela
- Descrição: Anotação do nome da tabela, identificando a tabela correspondente à classe da entidade
- Onde usar: classe de entidade
@TableName("sys_user")
public class User {
private Long id;
private String name;
private Integer age;
private String email;
}
Atributos | tipo | Deve ser especificado | valor padrão | descrever |
valor | Corda | não | "" | Nome da tabela |
esquema | Corda | não | "" | esquema |
keepGlobalPrefix | boleano | não | falso | Se deve continuar usando o valor global tablePrefix (quando o global tablePrefix estiver em vigor) |
resultadoMapa | Corda | não | "" | O id de resultMap em xml (usado para satisfazer tipos específicos de ligação de objeto de classe de entidade) |
autoResultMap | boleano | não | falso | Se o resultMap deve ser construído e usado automaticamente (se o resultMap estiver definido, a construção automática e a injeção do resultMap não serão executadas) |
excluirPropriedade | Corda[] | não | {} | Nomes de atributos a serem excluídos |
Descrição sobre autoResultMap
:
O MP irá construir um automaticamente resultMap
e injetá-lo no MyBatis (geralmente não usado), observe o seguinte:
Como a camada inferior do MP é MyBatis, o MP apenas ajuda a injetar CRUD comumente usado no MyBatis. Antes da injeção, ele é dinâmico (muda de acordo com os campos e anotações da entidade), mas após a injeção, é estático (igual ao conteúdo na configuração XML).
Para typeHandler
atributos, MyBatis suporta apenas escrita em 2 lugares:
- Definido no resultMap, usado para encapsular os resultados da consulta
- Definido após a instrução
insert
and (por exemplo: ) e se aplica apenas ao atualupdate
#{property}
property
#{property,typehandler=xxx.xxx.xxx}
设置值
Além dos dois typeHandler
formulários diretamente especificados acima, MyBatis possui uma configuração para verificação global de pacotes customizados , o princípio é encontrar o correspondente typeHandler
de acordo com o seu tipo e utilizá-lo.property
typeHandler
2、@TableId
- Descrição: anotação de chave primária
- Onde usar: campo de chave primária da classe de entidade
@TableName("sys_user")
public class User {
@TableId
private Long id;
private String name;
private Integer age;
private String email;
}
Atributos | tipo | Deve ser especificado | valor padrão | descrever |
valor | Corda | não | "" | Nome do campo-chave primário |
tipo | Enum | não | IdType.NONE | Especifique o tipo de chave primária |
2.1 Tipo de ID
Atributos | ilustrar |
AUTO | Incremento automático de ID do banco de dados |
NENHUM | Sem estado, este tipo não possui conjunto de chave primária (a anotação equivale a seguir o global, e o Rio global é aproximadamente igual a INPUT) |
ENTRADA | Defina você mesmo o valor da chave primária antes de inserir |
ASSIGN_ID | Atribuir ID (o tipo de chave primária é Number (Long e Integer) ou String) (desde 3.3.0), use o IdentifierGenerator método de interface nextId (a classe de implementação padrão é DefaultIdentifierGenerator o algoritmo Snowflake) |
ASSIGN_UUID | Atribua UUID, o tipo de chave primária é String (desde 3.3.0), use IdentifierGenerator o método de interface nextUUID (método padrão) |
3、@TableField
- Descrição: Anotações de campo (chave não primária)
@TableName("sys_user")
public class User {
@TableId
private Long id;
@TableField("nickname")
private String name;
private Integer age;
private String email;
}
Atributos | tipo | Deve ser especificado | valor padrão | descrever |
---|---|---|---|---|
valor | Corda | não | "" | Nome do campo do banco de dados |
existir | boleano | não | verdadeiro | Se é um campo de tabela de banco de dados |
doença | Corda | não | "" | Condições de comparação de consulta de entidade de campo where . Se houver um valor definido, o valor definido prevalecerá. Caso contrário, será global por padrão %s=#{%s} . Consulte (abre uma nova janela) |
atualizar | Corda | não | "" | Injeção parcial de campo update set , por exemplo: ao anotar o campo de versão para update="%s+1" indicar uma atualização set version=version+1 (este atributo tem prioridade maior que el o atributo) |
inserirEstratégia | Enum | não | FieldStrategy.DEFAULT | Exemplo: NOT_NULLinsert into table_a(<if test="columnProperty != null">column</if>) values (<if test="columnProperty != null">#{columnProperty}</if>) |
updateStrategy | Enum | 否 | FieldStrategy.DEFAULT | 举例:IGNOREDupdate table_a set column=#{columnProperty} |
whereStrategy | Enum | 否 | FieldStrategy.DEFAULT | 举例:NOT_EMPTYwhere <if test="columnProperty != null and columnProperty!=''">column=#{columnProperty}</if> |
fill | Enum | 否 | FieldFill.DEFAULT | 字段自动填充策略 |
select | boolean | 否 | true | 是否进行 select 查询 |
keepGlobalFormat | boolean | 否 | false | 是否保持使用全局的 format 进行处理 |
jdbcType | JdbcType | 否 | JdbcType.UNDEFINED | JDBC 类型 (该默认值不代表会按照该值生效) |
typeHandler | Class<? extends TypeHandler> | 否 | UnknownTypeHandler.class | 类型处理器 (该默认值不代表会按照该值生效) |
numericScale | String | 否 | "" | 指定小数点后保留的位数 |
注意:
关于`jdbcType`和`typeHandler`以及`numericScale`的说明:
numericScale
只生效于 update 的 sql. jdbcType
和typeHandler
如果不配合@TableName#autoResultMap = true
一起使用,也只生效于 update 的 sql. 对于typeHandler
如果你的字段类型和 set 进去的类型为equals
关系,则只需要让你的typeHandler
让 Mybatis 加载到即可,不需要使用注解
FieldStrategy:
值 | 描述 |
---|---|
IGNORED | 忽略判断 |
NOT_NULL | 非 NULL 判断 |
NOT_EMPTY | 非空判断(只对字符串类型字段,其他类型字段依然为非 NULL 判断) |
DEFAULT | 追随全局配置 |
NEVER | 不加入SQL |
FieldFill:
值 | 描述 |
---|---|
DEFAULT | 默认不处理 |
INSERT | 插入时填充字段 |
UPDATE | 更新时填充字段 |
INSERT_UPDATE | 插入和更新时填充字段 |
4、@Version
描述:乐观锁注解、标记 @Version
在字段上
5、@EnumValue
描述:普通枚举类注解(注解在枚举字段上)
6、@TableLogic
Descrição: Anotações de processamento lógico de campo de tabela (exclusão lógica)
Atributos | tipo | Deve ser especificado | valor padrão | descrever |
---|---|---|---|---|
valor | Corda | não | "" | valor lógico não excluído |
delval | Corda | não | "" | valor da lápide |
7、@KeySequence
- Descrição: Estratégia de chave primária de sequência
oracle
- Atributos: valor, dbType
Atributos | tipo | Deve ser especificado | valor padrão | descrever |
---|---|---|---|---|
valor | Corda | não | "" | nome da sequência |
tipo de banco de dados | Enum | não | DbType.OTHER | Tipo de banco de dados. Se não estiver configurado, a implementação padrão é injetar IKeyGenerator. Múltiplas implementações devem ser especificadas. |
8、@OrderBy
Descrição: SQL integrado especifica a classificação por padrão, com uma prioridade inferior à consulta condicional do wrapper
Atributos | tipo | Deve ser especificado | valor padrão | descrever |
---|---|---|---|---|
isDesc | boleano | não | verdadeiro | Se deve consultar na ordem inversa |
organizar | curto | não | Curto.MAX_VALUE | Quanto menor o número, maior é |
Referência: Anotações | MyBatis-Plus