Explicación detallada de anotaciones comunes en MyBatis-Plus

@Nombre de la tabla

abb436bf7018e2b45cbe9879d1f34da6.png

@TableId
clave primaria exclusiva

Por ejemplo, el campo en la tabla de datos es id

Pero la clase de entidad es userId

Entonces necesitas poner esta anotación en el ID de usuario.

uso

Establecer el valor de asignación de clave principal asignando el nombre del campo de clave principal

tipo establece la estrategia de generación de clave principal para el tipo de clave principal (las marcadas con círculos son importantes)

8d46e6c6d9fc4626f8290dd269036b85.png

f9bd61c7e0bac5058fdc42408c133b51.png

1. Incremento automático de la base de datos AUTO.
Los desarrolladores no necesitan asignar valores. Incrementarán automáticamente +1 según el valor de ID máximo en la tabla actual.

Si asigna el valor manualmente, aún debe usar el valor máximo + 1 en la identificación de la base de datos para asignar la identificación.


2 Genere automáticamente claves primarias usando el algoritmo de copo de nieve NINGUNO.
Cuando lo use con nuevas adiciones, debe prestar atención a la longitud de la clave primaria. Sin embargo, en 3.20, se adopta el valor máximo de este campo + 1.

1. Cambie el tipo de datos de int a long

2. Es necesario cambiar la longitud de la tabla de la base de datos.

Debe prestar atención a la longitud generada; de lo contrario, se informará un error.

Causado por: org.apache.ibatis.reflection.ReflectionException:
 no se pudo establecer la propiedad 'id' de 'class com.lin.mybatisplus.pojo.User'
 con el valor '1289924709438889985' Causa: java.lang.IllegalArgumentException: 
 el tipo de argumento no coincide
entonces También debe modificar el tipo de datos antes de poder guardarlos.


3 El desarrollador asigna manualmente la ENTRADA.
Si a la identificación no se le asigna un valor durante la operación de inserción, entonces el valor almacenado en la base de datos será 0 (largo).

La base de datos generalmente utiliza el método de incremento automático de ID para procesar el valor del número de base de datos actual + 1

Si se da un valor, use el valor dado


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

El uso de mp para asignar valores automáticamente usa el algoritmo de copo de nieve, pero en 3.20, se usa el valor máximo del campo + 1.

5 ASSIGN_ID
es equivalente a UUID

El tipo de clave principal debe ser tipo Cadena y el UUID se generará automáticamente para la asignación.

Se debe considerar el diseño de campo de la base de datos. El tipo int en la base de datos no se puede guardar, pero debido a que la clave principal se incrementa automáticamente, si desea modificar el tipo int a un tipo varchar, debe eliminar la clave principal. autoincremento.


Uso del campo de clave no principal @TableField

Por ejemplo, el campo en la tabla de datos es nombre

Pero la clase de entidad es nombre de usuario

3c2a34ae327a164fa0f94d476722e1ef.png

Entonces necesitas poner esta anotación en el nombre de usuario.


Asignación de nombres de campos de asignación de valores de campos de clave no principal

existe indica si es un campo de la base de datos.
Al hacer VO DTO, a menudo consultamos algunos campos que no están en la base de datos. Si no están etiquetados

4d56078ee21c9c9624673e147ea402eb.png

Luego, la consulta informará un error (si el cambio de cara del miembro en la clase de entidad no tiene un campo correspondiente en la base de datos, se puede considerar como el mismo)

Debe establecerse en falso


select indica si consultar este campo
y no participa en la consulta, y devuelve nulo

2239b8ef52590d7659c2f5198a031d51.png

fill indica si se deben completar
los datos automáticamente. Cuando el objeto se almacena en los datos, mybatisplus asigna automáticamente valores a ciertos campos.

7a2dc0c6a9d40b27a36b67b5a5c1b48b.png

Escenarios de aplicación

crear_hora actualizar_hora

Por ejemplo, la hora de registro y la hora de modificación son básicamente utilizadas por cada tabla, la implementación es obtener la hora y guardarla.

pero es molesto

Luego deje que mp lo haga (tome la siguiente configuración y necesite crear un procesador)


DEFAULT: no procesado de forma predeterminada

INSERTAR: complete los campos al insertar (al agregar por primera vez)

INSERT_UPDATE: complete los campos al insertar y actualizar

(La última actualización significa que se cumplen tanto la inserción como la actualización)

ACTUALIZAR: complete los campos al actualizar

c758820ba62330fc63df75cc86180d05.png
Crear un procesador de autocompletar

35271fc1ebe813d8d9bfd69b98b5a708.png
prueba


@Version
etiqueta operación de modificación principal de bloqueo optimista

-Evitar que los datos sean manipulados repetidamente.

-Evitar que dos subprocesos operen los mismos datos al mismo tiempo para garantizar la seguridad de los datos.

principio:

Marque el bloqueo optimista para garantizar la seguridad de los datos a través del campo de versión. Al modificar datos,

La versión se utilizará como condición y la modificación será exitosa solo cuando se cumpla la condición.

versión=1

Hilo 1: actualizar... establecer versión = 2 donde versión = 1

Hilo 2: actualizar... establecer versión = 2 donde versión = 1

explicar:

Si algún subproceso funciona correctamente y la versión se cambia a 2, el otro subproceso no podrá ejecutarse.

Configuración del entorno:

1. Agregue un campo de versión a la base de datos con un valor predeterminado de 1

eaca6eb425a8eb608fa9e2103ad90ac7.png
2. Agregue la variable miembro de versión a la clase de entidad y agregue @version

b2ebf3887b42c71a0bcba7e4b7a90b16.png
3.Escribir clase de configuración

e2465166af969ac4037088ae81bf384f.png

prueba

13122c0d004e9270eb557f76e9dee5ed.png

Modifica la situación al mismo tiempo; si estás interesado, puedes probarlo.


@EnumValue
es una anotación de clase de enumeración general que asigna campos de base de datos a variables miembro de tipo de enumeración de clases de entidad.

Conciencia: cambie la enumeración a una variable miembro y asígnela al campo de la base de datos, y busque el objeto correspondiente a la enumeración según el valor del campo de la base de datos.

1. Agregar campo de estado a la base de datos

56c31d15c6c4dd7b2937974198f0e04c.png
2. Cree una nueva clase de enumeración.

65cd92dbe0d610c086c7e477bd7f4b25.png
Agregar campos: tenga en cuenta que deben estar asignados con campos de la base de datos


Configure el escaneo de paquetes de enumeración en el archivo de configuración
@TableLogic

Lápida del mapa

Anotaciones de uso común
@TableName: anotar nombres de tablas de datos

@TableId: identificador de clave primaria de la tabla

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

@TableId(valor = “id”, tipo = IdType.ID_WORKER_STR): tipo de cadena de ID única global distribuida

@TableId(valor = “id”, tipo = IdType.INPUT): ingréselo usted mismo

@TableId(valor = “id”, tipo = IdType.ID_WORKER): ID único global distribuido tipo entero largo

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

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

@TableField: identificador del campo de la tabla

@TableField (exist = false): indica que el atributo no es un campo de tabla de base de datos, pero debe usarse.

@TableField (exist = true): indica que la propiedad es un campo de tabla de base de datos.

@TableField (condición = SqlCondition.LIKE): indica que esta propiedad se puede realizar una búsqueda difusa.

@TableField (fill = FieldFill.INSERT): anote el campo de relleno y la parte de la estrategia del generador también se puede configurar.

@Estrategia de campo:

@FieldFill

@Version: Anotaciones y etiquetas de bloqueo optimistas

@EnumValue: pasar anotación de clase de enumeración

@TableLogic: anotación de procesamiento lógico del campo de la tabla (eliminación lógica)

@SqlParser: anotación de inquilino
 

Supongo que te gusta

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