Mybatis-plus (MP para curta) é uma ferramenta de aprimoramento Mybatis. Com base no Mybatis, ele só aprimora e não muda, e nasce para simplificar o desenvolvimento e melhorar a eficiência.
Documento chinês: http://baomidou.oschina.io/mybatis-plus-doc/#/
Este artigo apresenta
1) Como construí -lo
2) Geração de código (controlador, serviço, mapeador, xml)
3) As classes de base de Crud, Condicional e Base de Paginação de uma única tabela foram feitas para você
1. Como construí -lo
1. Primeiro, criamos um projeto de troca -> https://start.spring.io/
2. Dependência do Maven
<Depencency> <PuerpId> com.baomidou </frugiD> <stifactId> mybatis-plus-boot-starter </artifactId> <versão> 2.3 </versão </dependency> <!-Velocity dependência para geração de código-> <Depency> <Grupid> Org.apache.inEnity </GrupoIdIdid> <Versão> 2.0 </sisters> </dependency>
3. Configuração (porque sinto que é muito prolixo, a configuração da fonte de dados é omitida aqui)
Application.Properties
mybatis-plus.mapper-locations = ClassPath: /mapper/*Mapper.xmlmybatis-plus.typealiasespackage=com.taven.web.springbootmp.entitymybatis-plus.global-config.id-type=3myBatis-plus egy = 2mybatis-plus.global-config.db-colun-underline = truemybatis-plus.global-config.key--generator = com.baomidou.mybatisplus.increncier.oraclekegeGeneratormyBatis-plus.global mybatis-plus.global-config.Logic-not-delete-value = 0mybatis-plus.global-config.sql-injector = com.baomidou.mybatisplus.mapper.LogicsQjector#Isso precisa ser alterado para sua classe mybatis- plus- plus. .taven.web.springbootmp.mymetaobjecthandlermybatis-plus.configuration.map-underscore to-camel-case = truemybatis-plus.configuration.cache-enabled = FalsemyBatis-plus.configaturation.jdbature.cache-inabled = FalsemyBatis-plus.configaturation.jdbatury.cache-inabled = FalsemyBatis-plus.configuration.jdbation.cache-inabled = FalsemyBatis-plus.configuration.jdbcuration.cache-inabled = FalsemyBatis-plus
Classe de configuração mybatisplusconfig
importar org.mybatis.spring.annotation.mapperscan; importar org.springframework.context.annotation.bean; importar org.springframework.context.annotation.configuration; import com.baomidou.mybatisplus.incrender.h2ygerator; com.baomidou.mybatisplus.incremeR.ikeygenerator; importar com.baomidou.mybatisplus.mapper.isqlinjector; import com.baomidou.mybatisplus.mapper.mapper.LogicsQlinject; importância comaMidou.MyBatisplus.Mapper.Mapper.Mapper.LogicsQlinor; com.baomidou.mybatisplus.plugins.paginationInterceptor; importar com.baomidou.mybatisplus.plugins.performanceInterceptor; importação com.taven.web.springbootmp.mymetaobjecthandler;@EnabetransactionManagement@Configuration@mapperscan ("com.taven.web.springbootsp.mapper") Classe public MybatiscuscuReft {** ** * mybatis-plus ") PerformanceIntercept performanceIntercept () {return new performanceIntercept (); } / * * Plug-in de paginação, identificando automaticamente multi-inquilinos no tipo de banco de dados, consulte o site oficial [Extensão do plug-in] * / @Bean PublicinIntercept PaginationInterceptor () {return New PaginationInterceptor (); } @Bean público metaobjecthandler metaobjecthandler () {return new MyMetaObJectHandler (); } / *** Injeção Gerador de chave primária* / @Bean Public iKeyGenerator keyGenerator () {return New H2KeyGenerator (); } / *** injeção sql injector* / @Bean public isQLinDor SQLINDOR () {return new LogicsQLinDorCor (); }} importar com.baomidou.mybatisplus.mapper.metaobjecthandler; importar org.apache.ibatis.reflection.metaObject; importar org.slf4j.logger; importação org.slf4j.loggerFactory;/** * injeção pública FILDSTATIONCIONSTTUMENTJEXTECTENCTENCIOTJ * METUTTIONCIONCTUMENT * O opcionSTECTMECT * **/** ** injet/mexteliStTENCT.SlfTENCTMECT * **/** **/nOnMon/MatemTect MethodEnção * O opcionSTECT * FILTECTIONJ.LOGGERTORY;/** ** * estende o metaobjecthandler {Logger estático final protegido = loggerFactory.getLogger (Application.class); @Override public void insertfill (metaobject metaObject) {logger.info ("faça algo indesejável quando adicionado"); } @Override public void updateFill (metaObject metaObject) {Logger.info ("Faça algo indesejável quando atualizado"); }} 2. Geração de código
Execute o JUNIT para gerar controlador, interface de serviço, implementação, mapeador e xml
importar org.junit.test; importar com.baomidou.mybatisplus.generator.autogennerator; import com.baomidou.mybatisplus.generator.config.dataSousceConfig; import.baomidou.mybatisplus.generator.config; com.baomidou.mybatisplus.generator.config.packageconfig; importar com.baomidou.mybatisplus.generator.config.strategyconfig; import.btaomidou.mybatisplus.Generator.Config.Rulses.DBTyPE; com.baomidou.mybatisplus.generator.config.rules.namingstrategy;/** * <p> * Código de geração de teste * </p> * * @author k deus * @date 2017/12/18 */public class GeratorEntity {@Test Public Void GeneratE GERATATATE () {stringtionEn. "com.taven.web.springbootmp"; Boolean servicenameStartWithi = false; // Usuário -> UserService, defina como true: Usuário -> IUSERSERVICE GenerateByTables (ServiceNameStartWithi, packagename, "Cable", "Station"); // modificar para o seu nome de tabela} vazio privado e pacotebilyTables (Boolean ServiceStEnMestartWithithithithi), o nome da tabela), o StringAgnEGByTables (Boolean "); = novo globalConfig (); String dburl = "jdbc: mysql: // localhost: 3306/comunicado"; 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 (comprimidos); // modificar e substituir o nome da tabela que você precisa. .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). } // vazio privado generateByTables (string packagename, string ... tablenames) {// generatebyTables (true, packagename, tableName); //}}A construção foi basicamente concluída neste momento e você pode começar a usá -la abaixo!
3. Use Mybatis-plus
Primeiro, executamos o código gerado () acima e geramos o seguinte código para nós com base na estrutura da tabela (o XML foi movido para o seguinte manualmente). O serviço e o mapeador herdaram a classe base e encapsularam muitos métodos para nós. Vamos ver alguns exemplos simples abaixo.
/** * <p> * controlador de extremidade frontal * </p> * * @author yin tianwen * @since 2018-05-31 */ @controlador @requestmapping ("/cabo") classe pública CableController {@Autowired Private Cableservice Cableservice; /*** Lista de teste de consulta**/@RequestMapping ("/1") @ResponseBody Public Object test1 () {// Construa o objeto EntityWrapper correspondente à entidade e filtro e consulta EntityWrapper <Bage> ew = new EntityWrapper <> (); ew.where ("type = {0}", 1) .like ("nome", "rei") .and ("core_number = {0}", 24) .and ("is_delete = 0"); List <BaBle> List = CabableService.SelectList (EW); List <map <string, objeto >> maps = cabservice.selectmaps (ew); System.out.println (list); System.out.println (mapas); retornar "ok"; }/*** Teste de consulta de paginação*/@RequestMapping ("/2") @ResponseBody Public Object test2 () {// Construa o objeto EntityWrapper correspondente à entidade e execute a filtragem de consulta EntityWrapper <Bage> ew = new EntityWrapper <> (); ew.where ("type = {0}", 1) // .like ("nome", "rei") .and ("core_number = {0}", 24) .and ("is_delete = 0"); Página <BaBle> página = nova página <> (1,10); Page <BaBled> pagerst = cabservice.leclectpage (página, ew); retornar pager; }/*** Campo de consulta personalizado*/@RequestMapping ("/3") @ResponseBody Public Object test3 () {objeto vl = null; // Construa o objeto EntityWrapper correspondente à entidade e execute a filtragem de consulta EntityWrapper <BaBlege> ew = new entitywrapper <> (); ew.SetSqlSelect ("ID,` name`, " +" tipo/n " +" quando 1 então '220kv'/n " +" typename typename ") .where (" type = {0} ", 1) // .like (" name "," King ") .where (false"/voltage_level)/. Página <> (1,10); Page <BaBled> pagerst = cabservice.leclectpage (página, ew); retornar pager; }/** * inserir */@RequestMapping ("/4") @ResponseBody Public Object test4 () {Cable C = new Cable (); c.setName ("Teste Cabo óptico"); cableservice.insert (c); retornar "ok"; }/** * Update */@RequestMapping ("/5") @ResponseBody Public Object test5 () {Cable C = cabalService.SelectById (22284L); c.setName ("Teste Cabo óptico 2222"); c.setType (1); cableservice.updatebyId (c); retornar "ok"; }}O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.