MybatisPlus 给我们提供了更加强大的代码生成器

代码生成器,根据数据库生成实体类,daoservicecontroller 层代码以及 mapper 映射文件,简化开发

配置

  • 在 pom 文件中添加如下依赖

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    <!-- 版本 -->
    <mybatisplus.version>3.2.0</mybatisplus.version>
    <lang3.version>3.9</lang3.version>

    <!-- mybatisplus代码生成器依赖 -->
    <dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>${mybatisplus.version}</version>
    </dependency>
    <dependency>
    <groupId>org.apache.velocity</groupId>
    <artifactId>velocity-engine-core</artifactId>
    <version>2.1</version>
    </dependency>
    <dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>2.3.29</version>
    </dependency>
    <dependency>
    <groupId>com.ibeetl</groupId>
    <artifactId>beetl</artifactId>
    <version>3.0.11.RELEASE</version>
    </dependency>

    <!-- 加入 slf4j ,查看日志输出信息 -->
    <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.7</version>
    </dependency>
    <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.7</version>
    </dependency>
  • 复制如下代码到项目任意位置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    import com.baomidou.mybatisplus.enums.IdType;
    import com.baomidou.mybatisplus.exceptions.MybatisPlusException;
    import com.baomidou.mybatisplus.generator.AutoGenerator;
    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.mybatisplus.generator.config.rules.DbType;
    import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
    import org.apache.commons.lang3.StringUtils;

    import java.util.Scanner;

    /**
    * @author GarveyZhong
    * @date 2020/5/19 11:25
    */
    public class TestMp3 {
    /**
    * 作者名称
    */
    private static final String AUTHOR = "GarveyZhong";
    /**
    * 生成的位置
    */
    private static final String OUTPUT_DIR = "D:/代码生成/";
    /**
    * 驱动,注意版本
    */
    private static final String DRIVER = "com.mysql.cj.jdbc.Driver";
    /**
    * 连接路径,注意修改数据库名称
    */
    private static final String URL = "jdbc:mysql://localhost:3306/mp?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC";
    /**
    * 数据库用户名
    */
    private static final String USERNAME = "root";
    /**
    * 数据库密码
    */
    private static final String PASSWORD = "root";
    /**
    * 数据库表的前缀,如t_user
    */
    private static final String TABLE_PREFIX = "t_";
    /**
    * 顶级包结构
    */
    private static final String PARENT_PACKAGE = "com.zjw";
    /**
    * 数据访问层包名称
    */
    private static final String DAO = "dao";
    /**
    * 业务逻辑层包名称
    */
    private static final String SERVICE = "service";
    /**
    * 实体层包名称
    */
    private static final String ENTITY = "entity";
    /**
    * 控制器层包名称
    */
    private static final String CONTROLLER = "controller";
    /**
    * mapper映射文件包名称
    */
    private static final String MAPPER_XML = "mapper";
    /**
    * 模块名
    */
    private static final String MODULE_NAME = "sys";

    /**
    * 读取控制台内容
    */
    public static String scanner(String tip) {
    Scanner scanner = new Scanner(System.in);
    StringBuilder help = new StringBuilder();
    help.append("请输入" + tip + ":");
    System.out.println(help.toString());
    if (scanner.hasNext()) {
    String ipt = scanner.next();
    if (StringUtils.isNotEmpty(ipt)) {
    return ipt;
    }
    }
    throw new MybatisPlusException("请输入正确的" + tip + "!");
    }

    public static void main(String[] args) {
    // 1. 全局配置
    GlobalConfig config = new GlobalConfig();
    config.setAuthor(AUTHOR) // 作者
    // 生成路径
    .setOutputDir(OUTPUT_DIR)
    // 文件覆盖
    .setFileOverride(true)
    // 主键策略
    .setIdType(IdType.AUTO)
    // 设置生成的service接口的名字的首字母是否为I,加%s则不生成I
    .setServiceName("%sService")
    // 映射文件中是否生成ResultMap配置
    .setBaseResultMap(true)
    // 生成通用sql字段
    .setBaseColumnList(true);

    //2. 数据源配置
    DataSourceConfig dsConfig = new DataSourceConfig();
    // 设置数据库类型
    dsConfig.setDbType(DbType.MYSQL)
    //设置驱动
    .setDriverName(DRIVER)
    //设置连接路径
    .setUrl(URL)
    //设置用户名
    .setUsername(USERNAME)
    //设置密码
    .setPassword(PASSWORD);
    //4. 包名策略配置
    PackageConfig pkConfig = new PackageConfig();
    // 顶级包结构
    pkConfig.setParent(PARENT_PACKAGE)
    //数据访问层
    .setMapper(DAO)
    //业务逻辑层
    .setService(SERVICE)
    //控制器
    .setController(CONTROLLER)
    //实体类
    .setEntity(ENTITY)
    //mapper映射文件
    .setXml(MAPPER_XML)
    //模块名;
    .setModuleName(scanner("模块名"));

    //3. 策略配置
    StrategyConfig stConfig = new StrategyConfig();
    //全局大写命名
    stConfig.setCapitalMode(true)
    // 数据库表映射到实体的命名策略
    .setNaming(NamingStrategy.underline_to_camel)
    .setColumnNaming(NamingStrategy.underline_to_camel)
    //.setTablePrefix(tablePrefix) //表前缀
    .setInclude(scanner("请输入表名(多个以英文逗号隔开):").split(","))
    .setTablePrefix(pkConfig.getModuleName() + "_")
    //.setInclude(tables) // 生成的表
    .setControllerMappingHyphenStyle(true);

    //5. 整合配置
    AutoGenerator ag = new AutoGenerator();
    ag.setGlobalConfig(config)
    .setDataSource(dsConfig)
    .setStrategy(stConfig)
    .setPackageInfo(pkConfig);
    //6. 执行
    ag.execute();
    }
    }
  • 运行 main 方法,输入相关信息,生成代码

    img

至此代码就生成成功了