Table des matières
Annotations communes Mybatis-Plus
Annotations communes Mybatis-Plus
1. @NomTable
- Description : Annotation du nom de la table, identifiant la table correspondant à la classe d'entité
- Où utiliser : classe d'entité
@TableName("sys_user")
public class User {
private Long id;
private String name;
private Integer age;
private String email;
}
Les attributs | taper | Doit être précisé | valeur par défaut | décrire |
valeur | Chaîne | Non | "" | Nom de la table |
schéma | Chaîne | Non | "" | schéma |
keepGlobalPrefix | booléen | Non | FAUX | S'il faut continuer à utiliser la valeur globale tablePrefix (lorsque la valeur globale tablePrefix est en vigueur) |
carterésultat | Chaîne | Non | "" | L'identifiant de resultMap en XML (utilisé pour satisfaire des types spécifiques de liaison d'objet de classe d'entité) |
Carte de résultats automatique | booléen | Non | FAUX | S'il faut créer et utiliser automatiquement resultMap (si resultMap est défini, la construction et l'injection automatiques de resultMap ne seront pas effectuées) |
exclurePropriété | Chaîne[] | Non | {} | Noms d'attributs à exclure |
Description à propos de autoResultMap
:
MP en créera automatiquement un resultMap
et l'injectera dans MyBatis (généralement non utilisé), veuillez noter ce qui suit :
Parce que la couche inférieure de MP est MyBatis, MP vous aide simplement à injecter du CRUD couramment utilisé dans MyBatis. Avant l'injection, il est dynamique (change en fonction de vos champs d'entité et de vos annotations), mais après l'injection, il est statique (égal au contenu dans la configuration XML).
Pour typeHandler
les attributs, MyBatis ne prend en charge l'écriture qu'à 2 endroits :
- Défini dans resultMap, utilisé pour encapsuler les résultats de la requête
- Défini après l' instruction
insert
and (par exemple : ), et s'applique uniquement à l'instruction actuelle.update
#{property}
property
#{property,typehandler=xxx.xxx.xxx}
设置值
En plus des deux typeHandler
formulaires directement spécifiés ci-dessus, MyBatis dispose d'une configuration d'analyse globale des packages personnalisés , le principe est de trouver celui correspondant typeHandler
selon votre type et de l'utiliser.property
typeHandler
2、@TableId
- Description : Annotation de clé primaire
- Où utiliser : champ de clé primaire de classe d'entité
@TableName("sys_user")
public class User {
@TableId
private Long id;
private String name;
private Integer age;
private String email;
}
Les attributs | taper | Doit être précisé | valeur par défaut | décrire |
valeur | Chaîne | Non | "" | Nom du champ de clé primaire |
taper | Énumération | Non | IdType.NONE | Spécifier le type de clé primaire |
2.1 Type d'identifiant
Les attributs | illustrer |
AUTO | Incrémentation automatique de l'ID de base de données |
AUCUN | Sans état, ce type n'a pas de jeu de clés primaires (l'annotation équivaut à suivre le global, et le Rio global est approximativement égal à INPUT) |
SAISIR | Définir la valeur de la clé primaire avant l'insertion |
ASSIGN_ID | Attribuez un ID (le type de clé primaire est Number (Long and Integer) ou String) (depuis 3.3.0), utilisez la IdentifierGenerator méthode d'interface nextId (la classe d'implémentation par défaut est DefaultIdentifierGenerator l'algorithme Snowflake) |
ASSIGN_UUID | Attribuez l'UUID, le type de clé primaire est String (depuis 3.3.0), utilisez IdentifierGenerator la méthode d'interface nextUUID (méthode par défaut par défaut) |
3、@TableField
- Description : Annotation de champ (clé non primaire)
@TableName("sys_user")
public class User {
@TableId
private Long id;
@TableField("nickname")
private String name;
private Integer age;
private String email;
}
Les attributs | taper | Doit être précisé | valeur par défaut | décrire |
---|---|---|---|---|
valeur | Chaîne | Non | "" | Nom du champ de base de données |
exister | booléen | Non | vrai | Qu'il s'agisse d'un champ de table de base de données |
condition | Chaîne | Non | "" | Conditions de comparaison des requêtes d'entité de champ where . Si une valeur est définie, la valeur définie prévaudra. Dans le cas contraire, elle sera globale par défaut %s=#{%s} . Veuillez vous référer à (ouvre une nouvelle fenêtre) |
mise à jour | Chaîne | Non | "" | Injection partielle du champ update set , par exemple : lors de l'annotation du champ version pour update="%s+1" indiquer une mise à jour set version=version+1 (cet attribut a une priorité plus élevée que el l'attribut) |
insérerStratégie | Énumération | Non | FieldStrategy.DEFAULT | Exemple : 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
Description : Annotations de traitement logique du champ de table (suppression logique)
Les attributs | taper | Doit être précisé | valeur par défaut | décrire |
---|---|---|---|---|
valeur | Chaîne | Non | "" | valeur logique non supprimée |
Delval | Chaîne | Non | "" | valeur de base |
7、@KeySequence
- Description : stratégie de clé primaire de séquence
oracle
- Attributs : valeur, dbType
Les attributs | taper | Doit être précisé | valeur par défaut | décrire |
---|---|---|---|---|
valeur | Chaîne | Non | "" | nom de la séquence |
Type de base de données | Énumération | Non | DbType.AUTRE | Type de base de données. Si elle n'est pas configurée, l'implémentation par défaut consiste à injecter IKeyGenerator. Plusieurs implémentations doivent être spécifiées. |
8、@OrderBy
Description : SQL intégré spécifie le tri par défaut, avec une priorité inférieure à la requête conditionnelle du wrapper
Les attributs | taper | Doit être précisé | valeur par défaut | décrire |
---|---|---|---|---|
estDesc | booléen | Non | vrai | S'il faut interroger dans l'ordre inverse |
trier | court | Non | Court.MAX_VALUE | Plus le nombre est petit, plus il est élevé |
Référence : Annotations | MyBatis-Plus