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定是必须的,但积累甚多,就一并贴出,

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

<!-- dependencies -->    <dependencies>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-web</artifactId>            <exclusions>                <exclusion>                    <groupId>org.springframework.boot</groupId>                    <artifactId>spring-boot-starter-logging</artifactId>                </exclusion>            </exclusions>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-web-services</artifactId>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-devtools</artifactId>            <scope>runtime</scope>            <!-- 为true,即热部署有效 -->            <optional>false</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.springframework.boot</groupId>            <artifactId>spring-boot-starter-freemarker</artifactId>        </dependency>        <!-- mybatis-plus自动代码生成 -->        <dependency>            <groupId>com.baomidou</groupId>            <artifactId>mybatis-plus-generator</artifactId>            <version>3.0.7.1</version>        </dependency>        <dependency>            <groupId>com.baomidou</groupId>            <artifactId>mybatis-plus-boot-starter</artifactId>            <version>3.1.1</version>        </dependency>        <!-- 低于1.3.7也许会报错 -->        <dependency>            <groupId>org.mybatis.generator</groupId>            <artifactId>mybatis-generator-core</artifactId>            <version>1.3.7</version>        </dependency>        <!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->        <dependency>            <groupId>org.mybatis.spring.boot</groupId>            <artifactId>mybatis-spring-boot-starter</artifactId>            <version>2.1.0</version>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-data-jpa</artifactId>        </dependency>        <!--日志记录配置 -->        <dependency>            <groupId>com.github.vindell</groupId>            <artifactId>spring-boot-starter-log4j2-plus</artifactId>            <version>1.0.5.RELEASE</version>        </dependency>        <!--日志记录配置 -->        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-log4j</artifactId>            <version>1.3.8.RELEASE</version>        </dependency>        <!-- pagehelper -->        <dependency>            <groupId>com.github.pagehelper</groupId>            <artifactId>pagehelper-spring-boot-starter</artifactId>            <version>1.2.5</version>        </dependency>        <!-- session -->        <dependency>            <groupId>org.springframework.session</groupId>            <artifactId>spring-session-core</artifactId>        </dependency>        <!-- 简化实体类(set/get/tostring/hashcode...etc) -->        <dependency>            <groupId>org.projectlombok</groupId>            <artifactId>lombok</artifactId>        </dependency>        <!-- HikariCP数据源,阿里数据源druid会因LocalDateTime报错 -->        <dependency>            <groupId>com.zaxxer</groupId>            <artifactId>HikariCP</artifactId>            <version>3.3.1</version>        </dependency>        <!-- java for mysql connector -->        <dependency>            <groupId>mysql</groupId>            <artifactId>mysql-connector-java</artifactId>            <version>8.0.11</version>        </dependency>        <!-- tomcat的支持 -->        <dependency>            <groupId>org.apache.tomcat.embed</groupId>            <artifactId>tomcat-embed-jasper</artifactId>        </dependency>        <!-- ActiveMQ:Apache所提供的一个开源的消息系统 -->        <dependency>            <groupId>org.apache.activemq</groupId>            <artifactId>activemq-all</artifactId>            <version>5.15.9</version>        </dependency>        <!-- Java语法糖帮助包,帮助简化代码,减少方法 -->        <dependency>            <groupId>cn.hutool</groupId>            <artifactId>hutool-all</artifactId>            <version>4.3.1</version>        </dependency>        <!-- servlet依赖 -->        <dependency>            <groupId>javax.servlet</groupId>            <artifactId>javax.servlet-api</artifactId>        </dependency>        <dependency>            <groupId>javax.servlet</groupId>            <artifactId>jstl</artifactId>        </dependency>    </dependencies>

配置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 & passworduserName=plhpassword=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;/** * <p> * 代码生成器 * </p> *  * @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<FileOutConfig> 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插件,具体步骤可单独搜索 ↩