mybatis-plus:使用Mybatis-AutoGenerator代码生成器(1)

AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成包括 Entity、Mapper、Mapper XML、Service、Controller 数个模块的代码,可以提升开发效率.

  • 首先,进入 https://start.spring.io 生成一个springboot简单项目
  • 下步,数据表SQL


 CREATE TABLE `soldier` (                                           
            `soldier_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '士兵编号',  
            `soldier_name` varchar(30) NOT NULL COMMENT '士兵名字',           
            `join_army_time` timestamp NOT NULL COMMENT '参军时间',           
            PRIMARY KEY (`soldier_id`),                                      
            KEY `sid` (`soldier_id`)                                         
          ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8; 


依赖

以下有些依赖不1定是必须的,但积累甚多,就一并贴出,

版本号是经过多次甄选的.





    

        
            org.springframework.boot
            spring-boot-starter-web
            
                
                    org.springframework.boot
                    spring-boot-starter-logging
                
            
        

        
            org.springframework.boot
            spring-boot-starter-web-services
        

        
            org.springframework.boot
            spring-boot-devtools
            runtime
            
            false
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
            
                
                    org.junit.vintage
                    junit-vintage-engine
                
            
        

        
            org.springframework.boot
            spring-boot-starter-freemarker
        

        
        
            com.baomidou
            mybatis-plus-generator
            3.0.7.1
        

        
            com.baomidou
            mybatis-plus-boot-starter
            3.1.1
        

        
        
            org.mybatis.generator
            mybatis-generator-core
            1.3.7
        

        
        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            2.1.0
        

        
            org.springframework.boot
            spring-boot-starter-data-jpa
        

        
        
            com.github.vindell
            spring-boot-starter-log4j2-plus
            1.0.5.RELEASE
        

        
        
            org.springframework.boot
            spring-boot-starter-log4j
            1.3.8.RELEASE
        

        
        
            com.github.pagehelper
            pagehelper-spring-boot-starter
            1.2.5
        

        
        
            org.springframework.session
            spring-session-core
        

        
        
            org.projectlombok
            lombok
        

        
        
            com.zaxxer
            HikariCP
            3.3.1
        

        
        
            mysql
            mysql-connector-java
            8.0.11
        

        
        
            org.apache.tomcat.embed
            tomcat-embed-jasper
        

        
        
            org.apache.activemq
            activemq-all
            5.15.9
        

        
        
            cn.hutool
            hutool-all
            4.3.1
        

        
        
            javax.servlet
            javax.servlet-api
        
        
            javax.servlet
            jstl
        

    



配置mybatis-plus.properties文件




#此处为本项目src所在路径(代码生成器输出路径)
OutputDir=/home/gzh/eclipse-workspace/Boot-Demo/src/main/java

#mapper.xml的生成位置
OutputDirXml=/home/gzh/eclipse-workspace/Boot-Demo/src/main/resources

#数据库表名(此处切不可为空,如果为空,则默认读取数据库的所有表名)
tableName=soldier

#存放所生成代码文件的上一级包名
#className=自填

#设置作者
author=gene

#正常情况下,下面的代码无需修改
#自定义包路径
parent=cn.example.demo

#数据库地址
url=jdbc:mysql://localhost:3306/test00?serverTimezone=CTT&characterEncoding=UTF-8&useSSL=false

#mysql:username & password
userName=plh
password=1234


Java代码

注意导入的package,不要导错




package cn.example.demo.util;

import java.util.ArrayList;
import java.util.List;
import java.util.ResourceBundle;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.InjectionConfig;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.FileOutConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.TemplateConfig;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;

/**
 * 

* 代码生成器 *

* * @author gzh * */ public class MybatisPlusGenerator { public static void main(String[] args) throws InterruptedException { // 获取Mybatis-Plus.properties文件的配置信息 final ResourceBundle rb = ResourceBundle.getBundle("mybatis-plus"); // 代码生成器 AutoGenerator mpg = new AutoGenerator(); // 全局配置 GlobalConfig gc = new GlobalConfig(); gc.setOutputDir(rb.getString("OutputDir")); gc.setOpen(false); gc.setBaseResultMap(true); gc.setBaseColumnList(true); gc.setAuthor(rb.getString("author")); gc.setMapperName("%sMapper"); gc.setXmlName("%sMapper"); gc.setServiceName("%sService"); gc.setServiceImplName("%sServiceImpl"); gc.setControllerName("%sController"); mpg.setGlobalConfig(gc); // dataSource配置 DataSourceConfig dsc = new DataSourceConfig(); dsc.setDbType(DbType.MYSQL); dsc.setUrl(rb.getString("url")); dsc.setDriverName("com.mysql.jdbc.Driver"); dsc.setUsername(rb.getString("userName")); dsc.setPassword(rb.getString("password")); mpg.setDataSource(dsc); // package配置 PackageConfig pc = new PackageConfig(); pc.setParent(rb.getString("parent")); pc.setController("controller"); pc.setService("service"); pc.setServiceImpl("service.impl"); pc.setEntity("bean"); pc.setMapper("mapper"); mpg.setPackageInfo(pc); // 自定义配置 InjectionConfig cfg = new InjectionConfig() { @Override public void initMap() { /* ... */ } }; // 如果模板引擎是 freemarker String templatePath = "/templates/mapper.xml.ftl"; // 自定义输出配置 List focList = new ArrayList<>(); // 自定义配置会被优先输出 focList.add(new FileOutConfig(templatePath) { @Override public String outputFile(com.baomidou.mybatisplus.generator.config.po.TableInfo tableInfo) { // 自定义输入文件名称 return rb.getString("OutputDirXml") + "/mapper/" + tableInfo.getEntityName() + StringPool.DOT_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.setInclude(new String[]{rb.getString("tableName")}); mpg.setStrategy(strategy); mpg.setTemplateEngine(new FreemarkerTemplateEngine()); mpg.execute(); System.out.println("done,fresh engineering"); } }

运行上面的main方法,便可生成 xml/bean/mapper/service/controller 计5个模块的代码.

1


  1. 注:lombok注解@Data要想起作用的话,还要为IDE另外安装lombok插件,具体步骤可单独搜索 ↩

你可能感兴趣的