MyBatis-plus (MP para abreviar) es una herramienta de mejora de mybatis. Según MyBatis, solo mejora y no cambia, y nace para simplificar el desarrollo y mejorar la eficiencia.
Documento chino: http://baomidou.oschina.io/mybatis-plus-doc/#/
Este artículo presenta
1) Cómo construirlo
2) Generación de código (controlador, servicio, mapeador, XML)
3) Se han realizado las clases de base de crud, consulta condicional y paginación de una sola tabla
1. Cómo construirlo
1. Primero creamos un proyecto SpringBoot -> https://start.spring.io/
2. Dependencia de Maven
<Spendency> <MoupRId> com.baomidou </groupid> <artifactid> mybatis-plus-boot-sharter </arfactid> <versión> 2.3 </versión> </pendency> <!-Velocity Dependency for Code Generation-> <epardency> <grupid> org.apache.velocity </groupid> <artactid> velocity-Engeneration <Versión> 2.0 </versión> </pendency>
3. Configuración (porque creo que es demasiado prolijo, la configuración de la fuente de datos se omite aquí)
Aplicación. Properties
mybatis-plus.mapper-locations = classpath: /mapper/*mapper.xmlmybatis-plus.typealiasespackage egy = 2mybatis-plus.global-config.db-column-unline = Truemybatis-plus.global-config.key-generator = com.baomidou.mybatisplus.incementer.oraclekeygeratormybatis-plus.global-config.logic-elete-value mybatis-plus.global-config.logic-not-dele-value = 0mybatis-plus.global-config.sql-injector = com.baomidou.mybatisplus.mapper.logicsqlinjector#Esto debe cambiar a su clase mybatis-plus.global-config.met-ooba-objectler = esto debe cambiar a su clase mybatis-plus.global-config.met-ooba-objectler = esto debe cambiar a su clase mybatis-plus.global-config.mape-ooba-objectler. .taven.web.springbootmp.mymetaObjEctthandlermybatis-plus.Configuration.map -underScore-to-Camel-Case = Truemybatis-plus.Configuration.Cache-Enable = falsemybatis-plus.configuration.jdbc-type-for-null
Clase de configuración mybatisplusconfig
importar org.mybatis.spring.annotation.mapperscan; import org.springframework.context.annotation.bean; import org.springframework.context.annotation.configuration; import com.baomidou.mybatisplus.incrementer.h2keygenerator; import; com.baomidou.mybatisplus.incrementer.ikeyGenerator; import com.baomidou.mybatisplus.mapper.isqlinjector; import com.baomidou.mybatisplus.plugins.paginationinterceptor; import com.baomidou.mybatisplus.plugins.performanceInterceptor; import com.taven.web.springbootmp.mymetaObjEcthandler;@enableTransactionManagement@configuration@mapperscan ("com.taven.web.springbootmp.mapper") clase pública mybatisconfig { / ** * mybatis-aplus sql de eficiencia complemento [puede ser cerrado en la clase de producción] PerformanceInterceptor PerformanceInterceptor () {return New PerformanceInterceptor (); } / * * Complemento de paginación, identificando automáticamente los múltiples inquilinos en el tipo de base de datos, consulte el sitio web oficial [Extensión del complemento] * / @Bean PaginationInterceptor PagationInterceptor () {return New PaginationInterceptor (); } @Bean public MetaOBJEctHandler MetaOBJEctHandler () {return new myMetaOBJEctthandler (); } / *** Generador de claves primario de inyección* / @Bean public iKeyGenerator keyGenerator () {return new H2KeyGenerator (); } / *** Inyector SQL Injector* / @Bean Public isqlinjector sqlinjector () {return new Logicsqlinjector (); }} import com.baomidou.mybatisplus.mapper.MetaObjectHandler;import org.apache.ibatis.reflection.MetaObject;import org.slf4j.Logger;import org.slf4j.LoggerFactory;/** * Inject public fields automatically fill, optional injection method *///@Componentpublic class MyMetaObjectHandler extends MetaObjEcthandler {protegido final de logger estático logger = loggerFactory.getLogger (application.class); @Override public void InsertFill (metaObject MetaObject) {logger.info ("Haz algo indescribible cuando se agrega"); } @Override public void UpdateFill (MetaObject MetaObject) {logger.info ("Haga algo indescribible cuando se actualice"); }} 2. Generación de código
Ejecutar Junit para generar controlador, interfaz de servicio, implementación, mapeador y XML
importar org.junit.test; import com.baomidou.mybatisplus.generator.autegenerator; import com.baomidou.mybatisplus.generator.config.datasourceconfig; import com.baomidou.mybatisplus.generator.config.globalconfig; import com.baomidou.mybatisplus.generator.config.packageConfig; import com.baomidou.mybatisplus.generator.config.strategyconfig; import com.baomidou.mybatals.generator.config.rules.dbtype; importar; com.baomidou.mybatisplus.generator.config.rules.naminginggy;/** * <p> * Código de generación de pruebas * </p> * * @author k dios * @date 2017/12/18 */public class GeneratorServiceEntity {@Test public Void Generatecode () {String Packagename = = = = = = = = = = = "com.taven.web.springbootmp"; boolean ServiceNaCeArtArtWithi = false; // user -> UserService, Establecer en True: User -> IUSerService GenerateByTables (SERVICENAmStartWithi, PackageName, "Cable", "Estation") ;/ Modificar a su nombre de tabla} Void GenerateByByTables (Boolean ServiceNaBeMestartWithi, String PackageName, String ... nuevo GlobalConfig (); Cadena dburl = "jdbc: mysql: // localhost: 3306/comunicate"; DataSourCeConFig dataSoUrCeConFig = new DataSourCeConFig (); DataSourCeConFig.SetDBType (dbtype.mysql) .setUrl (dburl) .setUsername ("root") .setPassword ("root") .setDrivername ("com.mysql.jdbc.driver"); StrategyConfig StrategyConfig = new StrategyConfig (); StrategyConfig .SetCapitalMode (true) .SetEntityLombokModel (false) .SetDBColumnunderline (true) .SetNaming (NamingStrategy.underline_to_camel) .SetinClude (tableames); // modificar y reemplazar con el nombre de la tabla que necesita, pasar múltiples nombres de la tabla para configurar la configuración. .setAuthor ("yin tianwen") .setOutputDir ("e: // dev // stsdev // spring-boot-mp // src // main // java") .setFileOverride (true); if (! ServiceNaMeStartWithi) {config.setserviceName ("%sservice"); } new Autogenerator (). SetGlobalConfig (config) .SetDataSource (DataSourCeConFig) .SetStrategy (StrategyConfig) .SetPackageInfo (New PackageConFig () .SetParent (PackageName) .SetController ("Controlador") .SetEntity ("entidad"); } // private void generateByTables (String PackageName, String ... Tablenames) {// GenerateByTables (True, PackageName, TableName); //}}La construcción se ha completado básicamente en este punto, ¡y puede comenzar a usarla a continuación!
3. Use mybatis-plus
Primero, ejecutamos el Code () anterior () anterior y generamos el siguiente código para nosotros en función de la estructura de la tabla (el XML se movió a lo siguiente manualmente). El Servicio y el Mapper han heredado la clase base y encapsularon muchos métodos para nosotros. Veamos algunos ejemplos simples a continuación.
/** * <p> * Controlador front-end * </p> * * @author yin tianwen * @since 2018-05-31 */ @controler @requestmapping ("/cable") clase pública cableController {@aUtoWired CableService private Cableservice; /*** Prueba de consulta de lista**/@RequestMapping ("/1") @ResponseBody Public Object test1 () {// Construye el objeto EntityWrapper correspondiente a la entidad de entidad y filtro y consulta EntityWrapper <Cable> ew = new EntityWrapper <> (); ew.where ("type = {0}", 1) .like ("name", "rey") .y ("core_number = {0}", 24) .Ay ("is_delete = 0"); List <cable> list = CableService.SelectList (EW); List <map <string, object >> maps = CablesService.SelectMaps (EW); System.out.println (lista); System.out.println (mapas); regresar "OK"; }/*** Test de consulta de paginación*/@RequestMapping ("/2") @ResponseBody Public Object test2 () {// Construye el objeto EntityWrapper correspondiente a la entidad y realiza la consulta de filtrado EntityWrapper <Cable> ew = New EntityWrapper <> (); ew.where ("type = {0}", 1) // .like ("nombre", "rey") .Ay ("core_number = {0}", 24) .And ("is_delete = 0"); Página <Cable> Página = nueva página <> (1,10); Página <cable> pagerst = cableService.selectPage (página, ew); regresar Pagerst; }/*** Campo de consulta personalizada*/@RequestMapping ("/3") @ResponseBody Public Object test3 () {Object vl = null; // Construye el objeto EntityWrapper correspondiente a la entidad y realiza la consulta de filtrado EntityWrapper <Cable> EW = New EntityWrapper <> (); ew.setsqlSelect ("id,` name`, " +" tipo de caso/n " +" Cuando 1 entonces '220kv'/n " +" final typename ") .where (" type = {0} ", 1) // .like (" name "," king ") .where (falso," voltage_level =#{0} ", vl); // vl es vacío, página está vacío, página vacía, página de cable, Page. Página <> (1,10); Página <cable> pagerst = cableService.selectPage (página, ew); regresar Pagerst; }/** * insertar */@RequestMapping ("/4") @ResponseBody Public Object test4 () {cable c = new Cable (); C.SetName ("Test Cable óptico"); CableService.insert (c); regresar "OK"; }/** * Update */@RequestMapping ("/5") @ResponseBody Public Object test5 () {cable c = Cableservice.SelectById (22284l); C.SetName ("Test Cable óptico 2222"); C.Settype (1); CableService.UpdateByid (c); regresar "OK"; }}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.