温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》
  • 首页 > 
  • 教程 > 
  • 开发技术 > 
  • SpringBoot集成Mybatis-plus并实现自动生成相关文件的示例代码怎么写

SpringBoot集成Mybatis-plus并实现自动生成相关文件的示例代码怎么写

发布时间:2021-12-16 08:46:24 来源:亿速云 阅读:168 作者:柒染 栏目:开发技术

这篇文章给大家介绍SpringBoot集成Mybatis-plus并实现自动生成相关文件的示例代码怎么写,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

Mybatis-Plus是一个优秀的Mybatis增强工具,目前更新到3.1.1。Mybatis-Plus原生提供了很多单表操作的方法,极大简化了繁琐的curd的操作,同时又支持xml配置、自定义sql的编写。这篇文章介绍SpringBoot2集成Mybatis-Plus 3.1.0,同时介绍mybatis提供MysqlGenerator.java,你可以通过指定的数据库表生成对应的bean、mapper.xml、mapper.java、service.java、serviceImpl.java,甚至controller

1.pom.xml添加相关依赖,请注意版本号:

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">     <modelVersion>4.0.0</modelVersion>     <parent>         <groupId>org.springframework.boot</groupId>         <artifactId>spring-boot-starter-parent</artifactId>         <version>2.6.1</version>         <relativePath/> <!-- lookup parent from repository -->     </parent>     <groupId>com.asiainfo</groupId>     <artifactId>rocketmq-producer</artifactId>     <version>0.0.1-SNAPSHOT</version>     <name>rocketmq-producer</name>     <description>Demo project for Spring Boot</description>     <properties>         <java.version>1.8</java.version>     </properties>     <dependencies>         <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter</artifactId>         </dependency>         <!--Springboot集成mybatis-plus开始-->         <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter-web</artifactId>         </dependency>         <dependency>             <groupId>mysql</groupId>             <artifactId>mysql-connector-java</artifactId>             <scope>runtime</scope>         </dependency>         <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter-freemarker</artifactId>         </dependency>         <dependency>             <groupId>com.baomidou</groupId>             <artifactId>mybatis-plus-boot-starter</artifactId>             <version>2.3</version>         </dependency>         <dependency>             <groupId>com.alibaba</groupId>             <artifactId>druid</artifactId>             <version>1.1.5</version>         </dependency>         <dependency>             <groupId>org.projectlombok</groupId>             <artifactId>lombok</artifactId>             <optional>true</optional>         </dependency>         <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter-test</artifactId>             <scope>test</scope>             <exclusions>                 <exclusion>                     <groupId>org.junit.vintage</groupId>                     <artifactId>junit-vintage-engine</artifactId>                 </exclusion>             </exclusions>         </dependency>         <dependency>             <groupId>org.testng</groupId>             <artifactId>testng</artifactId>             <version>RELEASE</version>             <scope>compile</scope>         </dependency>     </dependencies>     <build>         <plugins>             <plugin>                 <groupId>org.springframework.boot</groupId>                 <artifactId>spring-boot-maven-plugin</artifactId>             </plugin>             <!-- 添加代码 -->             <plugin>                 <groupId>org.apache.maven.plugins</groupId>                 <artifactId>maven-resources-plugin</artifactId>                 <version>2.7</version>                 <dependencies>                     <dependency>                         <groupId>org.apache.maven.shared</groupId>                         <artifactId>maven-filtering</artifactId>                         <version>1.3</version>                     </dependency>                 </dependencies>             </plugin>         </plugins>         <resources>             <resource>                 <directory>src/main/resources</directory>                 <includes>                     <include>**/*.properties</include>                     <include>**/*.xml</include>                     <include>**/*.yml</include>                 </includes>                 <filtering>true</filtering>             </resource>         </resources>     </build> </project>

2.application.yml

server:   port: 9999 spring:   application:     name: springboot-mybatisPlus   # database 部分注释   datasource:     type: com.alibaba.druid.pool.DruidDataSource     url: jdbc:mysql://localhost:3306/rocketmq?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconect=true&serverTimezone=GMT%2b8     username: root     password: root     driver-class-name: com.mysql.jdbc.Driver     filters: stat     maxActive: 50     initialSize: 0     maxWait: 60000     minIdle: 1     timeBetweenEvictionRunsMillis: 60000     minEvictableIdleTimeMillis: 300000     validationQuery: select 1 from dual     testWhileIdle: true     testOnBorrow: false     testOnReturn: false     poolPreparedStatements: true     maxOpenPreparedStatements: 20     removeAbandoned: true     removeAbandonedTimeout: 180 mybatis-plus:   global-config:     # 逻辑删除配置     db-config:       # 删除前       logic-not-delete-value: 1       # 删除后       logic-delete-value: 0   configuration:     map-underscore-to-camel-case: true     auto-mapping-behavior: full     log-impl: org.apache.ibatis.logging.stdout.StdOutImpl   mapper-locations: classpath:mybatisplus/mapper/*.xml

3.MyBatisPlusConfig.java

package com.asiainfo.crm.rocketmq.config; import com.baomidou.mybatisplus.mapper.ISqlInjector; import com.baomidou.mybatisplus.mapper.LogicSqlInjector; import com.baomidou.mybatisplus.plugins.PaginationInterceptor; import com.baomidou.mybatisplus.plugins.PerformanceInterceptor; import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; /**  * @author zhangpb  * @date 2021/12/15 14:13  * @Description:  */ @Configuration @Slf4j public class MyBatisPlusConfig {     /**      * @description: 配置分页插件      *      * @author: zhangpb      * @date: 2019/1/15 10:17      * @param: []      * @return: com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor      */     @Bean     public PaginationInterceptor paginationInterceptor() {         log.debug("注册分页插件");         return new PaginationInterceptor();     }     /**      * @description: SQL执行效率插件      *      * @author: zhangpb      * @date: 19-1-24 下午4:59      * @param: []      * @return: com.baomidou.mybatisplus.extension.plugins.PerformanceInterceptor      */     @Bean     @Profile({"test"})// 设置 dev test 环境开启     public PerformanceInterceptor performanceInterceptor() {         return new PerformanceInterceptor();     }     /**      * 逻辑删除用,3.1.1之后的版本可不需要配置该bean,但项目这里用的是3.1.0的      *      * @author zhangpb      *      * @return com.baomidou.mybatisplus.core.injector.ISqlInjector      */     @Bean     public ISqlInjector sqlInjector() {         return new LogicSqlInjector();     } }

4.MysqlGenerator.java

package com.asiainfo.crm.rocketmq.config; import com.baomidou.mybatisplus.generator.AutoGenerator; import com.baomidou.mybatisplus.generator.InjectionConfig; import com.baomidou.mybatisplus.generator.config.*; import com.baomidou.mybatisplus.generator.config.po.TableFill; import com.baomidou.mybatisplus.generator.config.po.TableInfo; import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine; import java.util.ArrayList; import java.util.List; /**  * @author zhangpb  * @date 2021/12/15 14:14  * @Description:  */ public class MysqlGenerator {     /**      * 每次只生成一张表的      * @param args      */     public static void main(String[] args) {         // 代码生成器         AutoGenerator mpg = new AutoGenerator();         // 全局配置         GlobalConfig gc = new GlobalConfig(); //        String projectPath = System.getProperty("user.dir"); //        gc.setOutputDir(projectPath + "/src/main/java");         String projectPath = "E://java-workspace//rocketmq//rocketmq_space//rocketmq//rocketmq-producer";         gc.setOutputDir(projectPath + "\\src\\main\\java\\com\\asiainfo\\crm\\rocketmq\\cell");         // TODO 设置用户名         gc.setAuthor("zhangpb");         gc.setOpen(true);         // service 命名方式         gc.setServiceName("%sService");         // service impl 命名方式         gc.setServiceImplName("%sServiceImpl");         // 自定义文件命名,注意 %s 会自动填充表实体属性!         gc.setMapperName("%sMapper");         gc.setXmlName("%sMapper");         gc.setFileOverride(true);         gc.setActiveRecord(true);         // XML 二级缓存         gc.setEnableCache(false);         // XML ResultMap         gc.setBaseResultMap(true);         // XML columList         gc.setBaseColumnList(false);         mpg.setGlobalConfig(gc);         // TODO 数据源配置         DataSourceConfig dsc = new DataSourceConfig();         dsc.setUrl("jdbc:mysql://127.0.0.1:3306/rocketmq?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=UTC");         dsc.setDriverName("com.mysql.jdbc.Driver");         dsc.setUsername("root");         dsc.setPassword("root");         mpg.setDataSource(dsc);         // TODO 包配置         PackageConfig pc = new PackageConfig();         //pc.setModuleName(scanner("模块名")); //        pc.setParent("com.zhangpb.demodruid");         pc.setEntity("entity");         pc.setService("service");         pc.setServiceImpl("service.impl");         mpg.setPackageInfo(pc);         // 自定义需要填充的字段         List<TableFill> tableFillList = new ArrayList<>();         //如 每张表都有一个创建时间、修改时间         //而且这基本上就是通用的了,新增时,创建时间和修改时间同时修改         //修改时,修改时间会修改,         //虽然像Mysql数据库有自动更新几只,但像ORACLE的数据库就没有了,         //使用公共字段填充功能,就可以实现,自动按场景更新了。         //如下是配置         //TableFill createField = new TableFill("gmt_create", FieldFill.INSERT);         //TableFill modifiedField = new TableFill("gmt_modified", FieldFill.INSERT_UPDATE);         //tableFillList.add(createField);         //tableFillList.add(modifiedField);         // 自定义配置         InjectionConfig cfg = new InjectionConfig() {             @Override             public void initMap() {                 // to do nothing             }         };         List<FileOutConfig> focList = new ArrayList<>();         focList.add(new FileOutConfig("/templates/mapper.xml.ftl") {             @Override             public String outputFile(TableInfo tableInfo) {                 // 自定义输入文件名称                 return projectPath + "/src/main/resources/mapper/"                         + "/" + tableInfo.getEntityName() + "Mapper" + ".xml";             }         });         cfg.setFileOutConfigList(focList);         mpg.setCfg(cfg);         mpg.setTemplate(new TemplateConfig().setXml(null));         // 策略配置         StrategyConfig strategy = new StrategyConfig();         strategy.setNaming(NamingStrategy.underline_to_camel);         strategy.setColumnNaming(NamingStrategy.underline_to_camel);         strategy.setEntityLombokModel(true);         // 设置逻辑删除键         strategy.setLogicDeleteFieldName("deleted");         // TODO 指定生成的bean的数据库表名         strategy.setInclude("trade_coupon");         //strategy.setSuperEntityColumns("id");         // 驼峰转连字符         strategy.setControllerMappingHyphenStyle(true);         mpg.setStrategy(strategy);         // 选择 freemarker 引擎需要指定如下加,注意 pom 依赖必须有!         mpg.setTemplateEngine(new FreemarkerTemplateEngine());         mpg.execute();     } }

关于SpringBoot集成Mybatis-plus并实现自动生成相关文件的示例代码怎么写就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI