La mayoría de los desarrolladores que usan MyBatis encontrarán un problema, que es escribir una gran cantidad de SQL en el archivo XML. Además de SQL de lógica comercial especial, también hay una gran cantidad de SQL con estructuras similares. Además, cuando cambia la estructura de la tabla de la base de datos, todas las clases de SQL y entidades correspondientes deben cambiarse. El impacto de esta carga de trabajo y eficiencia puede ser la barrera entre agregar, eliminar, modificar y verificar programadores y programadores reales. En este momento, el mapeador general surgió ...
¿Qué es un mapeador universal?
General Mapper es un complemento basado en MyBatis para resolver el problema de agregar, eliminar, modificar y buscar tablas únicas. Los desarrolladores no necesitan escribir SQL o agregar métodos a DAO. Mientras escriban bien la clase de entidad, pueden admitir los métodos correspondientes para agregar, eliminar, modificar y buscar.
Cómo usar
Tomando MySQL como ejemplo, suponga que existe una tabla:
CREATE TABLE `test_table` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT '', `create_time` datetime DEFAULT NULL, `create_user_id` varchar(32) DEFAULT NULL, `update_time` datetime DEFAULT NULL, `update_user_id` varchar(32) DEFAULT NULL, `is_delete` int (8) NULL predeterminado, clave primaria (`id`)) motor = innoDB Auto_Increment = 1 default Charset = utf8;
La clave principal es ID, que aumenta por sí misma. Aquí hay una tabla como ejemplo para introducir cómo usar un mapeador universal.
Dependencias maven
<!-General mapper-> <pendency> <grupid> tk.mybatis </groupid> <artifactid> mapper </artifactid> <versión> 3.3.9 </versión> </pendency>
Configuración de SpringMVC
< Mappers = tk.mybatis.mapper.common.mapper </value> </property> </bean>
Tenga en cuenta que tk.mybatis.spring.mapper.MapperScannerConfigure se usa aquí para reemplazar el mybatis org.mybatis.spring.mapper.MapperScannerConfigurer original.
Parámetros disponibles:
En la mayoría de los casos, estos parámetros no se utilizarán, y puede estudiarlos usted mismo si tiene circunstancias especiales.
Cómo escribir entidades
Recuerde un principio: número de campos en la clase de entidad> = número de campos que deben operarse en la tabla de la base de datos. Por defecto, todos los campos en la clase de entidad se operan como campos en la tabla, y si hay campos adicionales, se debe agregar la anotación @Transient .
@Table (name = "test_table") public class testTableVoImplements serializable {private static final long SerialVersionUid = 1l; @Id @GeneratedValue (generador = "JDBC") ID de largo privado; @Transient Private String UserId; nombre de cadena privada; Marca de tiempo privada CreateToTime; Cadena privada createUserId; PRIVADO TIMESTAMP UPDATATETIME; Cadena privada UpdateUserId; entero privado isdelete; // omitir get, set ...}ilustrar:
Cómo escribir Dao
En la escritura tradicional de mybatis, la interfaz DAO debe estar asociada con el archivo mapper, es decir, SQL debe escribirse para implementar métodos en la interfaz DAO. En general Mapper, DAO solo necesita heredar una interfaz común para tener métodos ricos:
Heredando el mapeador genérico, se deben especificar los genéricos
Interfaz pública TestTableAntAextends mapper <testTableVo> {}Una vez que heredas el mapeador, el mapeador heredado tiene todos los métodos comunes de mapeador:
Seleccionar
Método: List <T> Seleccionar (T Record);
Nota: Consulta basada en el valor del atributo en la entidad y use signos iguales para las condiciones de consulta
Método: t selectbyprimarykey (tecla de objeto);
Nota: Consulta basada en el campo clave principal. Los parámetros del método deben contener atributos de clave primarios completos. Las condiciones de consulta usan signos iguales.
Método: Lista <T> selectAll ();
Nota: Consulta todos los resultados, el método Select (NULL) puede lograr el mismo efecto
Método: T Selectone (T Record);
Nota: Consulta de acuerdo con las propiedades de la entidad, solo puede haber un valor de retorno, y se lanzan múltiples resultados. Las condiciones de consulta usan signos iguales.
Método: int selectCount (T Record);
Nota: Consulte el número total de atributos en la entidad y use el signo igual para las condiciones de consulta.
Insertar
Método: int Insert (T Record);
Nota: Guardar una entidad, el atributo nulo también se guardará y no se utilizará el valor predeterminado de la base de datos.
Método: int Insertselective (T Record);
Nota: Guardar una entidad, el atributo nulo no se guardará y se utilizará el valor predeterminado de la base de datos.
Actualizar
Método: int updateByPrimaryKey (T Record);
Nota: Actualice todos los campos de la entidad Según la clave principal, el valor nulo se actualizará
Método: int updateByPrimaryKeySelective (T Record);
Descripción: Actualice el valor cuyo atributo no es nulo de acuerdo con la clave principal
Borrar
Método: int eliminar (registro t);
Nota: Eliminar de acuerdo con los atributos de la entidad como condiciones, use signos iguales para condiciones de consulta
Método: int DeleteByPrimaryKey (clave de objeto);
Nota: Eliminar de acuerdo con el campo Clave principal, los parámetros del método deben contener atributos de clave primaria completos
Método de ejemplo
Método: Lista <T> selectByExample (ejemplo de objeto);
Descripción: Consulta según las condiciones de ejemplo
Punto clave: esta consulta admite especificar columnas de consulta a través de la clase de ejemplo y especificando columnas de consulta a través del método SelectProperties.
Método: int selectCountByExample (ejemplo de objeto);
Descripción: Consulte el número total de acuerdo con las condiciones de ejemplo
Método: int updateByExample (@param ("registro") t registro, @param ("ejemplo") ejemplo de objeto);
Descripción: Actualice todas las propiedades contenidas en el registro de la entidad de acuerdo con las condiciones del ejemplo, y se actualizará el valor nulo.
Método: int updateByExAMPleSelective (@param ("registro") t registro, @param ("ejemplo") ejemplo de objeto);
Descripción: Actualización del registro de la entidad Según las condiciones del ejemplo contiene el valor de la propiedad que no es nulo
Método: int DeleteByExample (ejemplo de objeto);
Descripción: Eliminar datos de acuerdo con las condiciones de ejemplo
Utilizado en el código
Inyecte DAO en el servicio y está listo para usar.
@AUTOWIREDPrivate testTableAo testTableAo;
La siguiente es una forma general de escribir:
Nuevo
TestTableVo vo = new testTableVo (); // omitir las propiedades de configuración para vo ... int row = testTableAo.insertSelective (Vo);
Revisar
TestTableVo vo = new testTableVo (); // omitir las propiedades de configuración para vo ... int file = testTableAoo.UpdateByPrimaryKeySelective (Vo);
Consulta un solo
TestTableVo vo = new testTableVo (); vo.setId (123l); testTableVo resultado = testTableAo.Selectone (VO);
Consulta condicional
// Crear ejemplo Ejemplo Ejemplo = nuevo ejemplo (testTableVo.class); // Crear criterioxample.criteria criterios = ejemplo.createCriteria (); // Agregar criterios de condición
Resumir
El principio de General Mapper es obtener la información de las clases de entidad a través de la reflexión y construir el SQL correspondiente. Por lo tanto, solo necesitamos mantener las clases de entidad, lo que proporciona una gran comodidad para hacer frente a necesidades complejas y cambiantes. La descripción anterior es solo un simple uso de General Mapper. En proyectos reales, aún debemos encapsular un método más grande, más general y mejor utilizado basado en el mapeador general basado en el negocio.
Con configuración de arranque de primavera
Aturdir
< <artifactid> mapper-spring-boot starter </arfactid> <versión> 1.1.4 </versión> </pendency>
Application.Properties Configuración
#Mapper#Mappers Comas separadas
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.