¿Cuáles son las características de mybatis-plus?
1. Código Generación 2. Constructor condicional
Para mí, el objetivo principal es usar su poderoso constructor condicional.
Pasos rápidos para usar:
1. Agregar dependencias de archivos POM
<Spendency> <MoupRid> org.apache.velocity </proupid> <artifactId> Velocity </artifactId> <PROPELLACIÓN> 1.7 </Versión> </pendency> <pendency> <MoupRupid> com.baomidou </groupId> <artifactid> myBatis-plus </artifactid> <version> 2.0.1 </versión> <//dependiente>
Nota: MyBatis-Plus mantendrá automáticamente las dependencias de MyBatis y MyBatis-Spring, por lo que no es necesario introducir los dos últimos para evitar conflictos de versión.
2. Modificar el archivo de configuración
Simplemente reemplace la Factory SQLSession de MyBatis con mybatis-plus. Mybatis-plus solo hace algunas extensiones funcionales:
<bean id = "sqlSessionFactory"> <Property name = "dataSource" ref = "dataSource"/> <!-escaneo automático de mapping.xml archivo-> <propiedad name = "mapperlocations" value = "classpath: mybatis/*/*. Xml"/> <name de propiedad = "configlocation" value = "classpath: mybatis/mybatis-config.xml"/> <propiedad name = "typealiasespackage" value = "com.baomidou.springmvc.model.*"/> <propiedad de propiedad = "complementos"> <Array> <!-Pagination Plugin Configuration-> <Bean Id = "PagininInterceptor"> <Argnins "> <Array> <! value = "mysql"/> </bean> </array> </property> <!-inyección de configuración global-> <propiedad name = "globalconfig" ref = "globalconfig"/> </ bean>
En la configuración anterior, además de la configuración regular de MyBatis, hay una configuración adicional y una configuración global del complemento de paginación. MyBatis-plus proporciona un uso muy conveniente del complemento de paginación, y también hay una configuración global de la siguiente manera:
<bean id = "globalconfig"> <!-auto-> 0` ("ID de base de datos Auto-Incremento") Entrada-> `1` (ID de entrada del usuario") id_worker-> `2` (" ID de un único global ") uuid->` 3` ("ID global único")-> <Nombre de propiedad = "Idtype" Valor = "2" /> <!-MySql-> `mysql` 'Mysql`' ORACLE->`oracle` DB2->`db2` H2->`h2` HSQL->`hsql` SQLITE->`sqlite` POSTGRE->`postgresql` SQLSERVER2005->`sqlserver2005` SQLSERVER->`sqlserver` --> <!-- Oracle needs to add Este elemento-> <!-<Property name = "dbtype" value = "oracle" />-> <!-La tabla global se establece verdadero para el nombre de subscore-> <Property name = "dbColumnunderline" value = "true" /> </ bean>En este punto, incluso si se completa el trabajo de configuración, usemos un ejemplo simple para experimentar su uso.
1. Cree una nueva tabla de usuario:
@TableName ("Usuario") Public Class Implementa serializable { / ** ID de usuario* / ID de Long Private; / ** Nombre de usuario*/ Nombre de cadena privada; / ** Edad del usuario*/ edad privada entera; @TableField (exist = false) State de cadena privada;}Hay dos anotaciones a tener en cuenta aquí. El primero es @tableName ("usuario"), que especifica la asociación con la tabla de la base de datos. La anotación aquí significa que debe haber una tabla llamada usuario en su base de datos correspondiente a ella, y el nombre de la columna de la tabla de datos debe ser los atributos de la clase de usuario. Para los atributos que se encuentran en la clase de usuario pero que no tienen en la tabla de usuario, se requiere una segunda anotación @TableField (exist = false) para excluir los atributos en la clase de usuario.
2. Cree una nueva interfaz de capa DAO Usermapper:
/*** Interfaz de la capa de control de la base de datos de la tabla de usuario*/Interfaz pública Usermapper extiende BaseMapper <Serement> {@select ("SelectUserList") Lista <Serem> SelectUserList (página de paginación, estado de cadena);}La interfaz DAO necesita implementar BasEMapper, para que se puedan utilizar muchos métodos encapsulados. Además, también puede escribir métodos usted mismo. @Select Annotation se refiere al archivo USERMapper referenciado desde el tercer paso.
3. Cree un nuevo archivo de configuración de Usermapper:
<? xml versión = "1.0" encoding = "utf-8"?> <! Doctype mapper public "-// mybatis.org//dtd mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace = "com.baomidou.springmvc.mapper.system.usermapper"> <!-columna de resultados de consultas generales-> <sql id = "base_column_list"> id, name, edad </sql> <select id = "selectUserList" resultType = "user">> de sys_user donde state =#{state} </SELECT> </SELECT> </SELECT> </SELECT.4. Cree una nueva clase de servicio UserService:
/** * * Clase de implementación de la interfaz de la capa de servicio de la tabla de datos de la tabla de usuarios * */@ServicePublic UserService de ussereService extiende ServiceImpl <Usermapper, user> {Public Page <Ser Usem> SelectUserPage (Page <Ser User> Page, String State) {Page.SetRecords (BaseMapper.SelectUserList (Página, Estado)); página de regreso; }}UserService hereda la clase ServiceImpl. MyBatis-Plus inyecta Usermapper en nosotros de esta manera. De esta manera, podemos usar muchos métodos proporcionados por la capa de servicio de forma predeterminada, y también podemos llamar a los métodos que escribimos en la capa DAO para operar la base de datos. La clase de página es un modelo que mybatis-plus proporciona la función de paginación, hereda la paginación, por lo que no necesitamos escribir otra clase de página nosotros mismos, solo úsela directamente.
5. Cree una nueva capa de controlador UserController
@ControllerPublic Class UserController extiende Basecontroller {@aUtowired IUSERService UserService; @ResponseBody @RequestMapping ("/Page") Public Object SelectPage (Modelo Modelo) {página página = nueva página (1,10); Page = UserService.SelectUserPage (página "normal"); página de regreso; }Lo anterior completa una función básica. Echemos un vistazo a su constructor condicional.
Constructor condicional para mybatis-plus
Primero, veamos la simple y practicidad de una instancia de constructor condicional.
public void test () {EntityWrapper ew = new EntityWrapper (); ew.setEntity (nuevo usuario ()); Name de cadena = "wang"; Edad entera = 16; ew.where ("name = {0}", nombre) .andNew ("edad> {0}", edad) .orderBy ("edad"); Lista <serem> list = Userservice.SelectList (EW); Página página2 = UserService.SelectPage (página, EW); }Aquí, se utiliza una clase de envoltura condicional EntityWrapper para ensamblar declaraciones SQL. El principio también es fácil de entender. En el código anterior, el resultado de la primera consulta de lista es consultar todos los registros en la base de datos con Name = Wang y edad> 16 años y clasificarlos de acuerdo con la edad. La segunda consulta es agregar otra función de paginación.
Básicamente, el uso de EntityWrapper puede simplemente completar algunas consultas condicionales, pero si el método de consulta se usa con mucha frecuencia, se recomienda escribirlo en Usermapper usted mismo.
Entonces, ¿puede el método Mapper personalizado utilizar EntityWrapper? Por supuesto, también es posible.
Un ejemplo de esto se da en la documentación.
1. Definición en Mappper:
Lista <serem> selectMyPage (RowBounds RowBounds, @param ("EW") WRAPPER <T> WRAPPER);
2. Defina en el archivo mapper:
<select id = "selectMypage" resultType = "User"> Seleccionar * de User $ {ew.sqlsegment} </select>Para el empalme condicional de EntityMapper, básicamente podemos implementar dónde, y, o, Groupby, Orderby y otras sintaxis comúnmente utilizadas en SQL, y los métodos de construcción específicos pueden combinarse de manera flexible.
@TestPublic void testTSQL11 () { / * * entidad con salida del método de uso de consultas para ver el resultado * / ew.setEntity (nuevo usuario (1)); ew.where ("name = {0}", "'zhangsan'"). y ("id = 1") .OneNew ("status = {0}", "0"). o ("status = 1") .notlike ("nlike", "noValue") .andNew ("nuevo = xx"). Like ("hhh", "ddd") .andNew ("pwd = 11"). isnotnull ("n1, n2"). isnull ("n3") .groupby ("x1"). groupby ("x2, x3") .Having ("x1 = 11"). tenedor ("x3 = 433") .orderby ("dd"). ordenby ("d1, d2"); System.out.println (ew.getSqlsegment ());}Documentos de referencia
mybaits-plus documentación oficial
Resumir
Lo anterior es el tutorial de introducción rápida para la herramienta MyBatis Plus presentada por el editor. Espero que te sea útil. Si tiene alguna pregunta, déjame un mensaje y el editor te responderá a tiempo.