@Nombre de la tabla
@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)
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
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
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
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.
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
Crear un procesador de autocompletar
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
2. Agregue la variable miembro de versión a la clase de entidad y agregue @version
3.Escribir clase de configuración
prueba
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
2. Cree una nueva clase de enumeración.
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