Spring Mybatis-Plus一键代码结构生成

小前端闲来无事接触接触JAVA,刚学了下Spring,打算采用JPA去开发,后面了解到了Mybatis-Plus的快乐之处,就想把心得分享一下,这里有些是借鉴别人的地方。

首先引入依赖

 <!-- mybatis-plus -->
 <dependency>
     <groupId>com.baomidou</groupId>
     <artifactId>mybatis-plus-boot-starter</artifactId>
     <version>3.3.1.tmp</version>
 </dependency>

 <dependency>
     <groupId>com.baomidou</groupId>
     <artifactId>mybatis-plus-generator</artifactId>
     <version>3.3.1.tmp</version>
 </dependency>

 <!-- 添加 模板引擎 依赖 -->
 <dependency>
     <groupId>org.apache.velocity</groupId>
     <artifactId>velocity-engine-core</artifactId>
     <version>2.2</version>
 </dependency>

然后maven执行包下载操作,等包下载完成后,在test测试下新建一个代码生成器测试类TextCodeGenerate,这里自己随便命名,然后就开始写一个静态方法,先默认构造对象AutoGenerator

AutoGenerator auto = new AutoGenerator();

接着,进行第一步:全局配置

 // 全局配置
 GlobalConfig glob = new GlobalConfig();
 // 填写代码生成的目录  (需要修改)
 String projectPath = "E:\\JavaBook\\spring-mybatisPlus-study";
 // 拼接出代码最终输出的目录
 glob.setOutputDir(projectPath + "/src/main/java");
 // 配置开发者信息 (可选)  (需要修改)
 glob.setAuthor("sumer");
 // 配置是否打开目录 false 为不打开 (可选)
 glob.setOpen(false);
 // 重新生成文件时是否覆盖(重要) (可选)
 glob.setFileOverride(true);
 // 配置文件生成策略 此处为 ASSIGN_ID (可选)
 glob.setIdType(IdType.ASSIGN_ID);
 // 配置日期类型 此处为 ONLY_DATE (可选)
 glob.setDateType(DateType.ONLY_DATE);
 // 默认生成service 会有I前缀
 glob.setServiceName("%sService");
 auto.setGlobalConfig(glob);

接着实行第二部操作:数据源配置

 // 数据源配置 (需要修改)
 DataSourceConfig data = new DataSourceConfig();
 // 配置数据库url 地址
 data.setUrl("jdbc:mysql://localhost:3306/sumerPlus?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=Asia/Shanghai");
 // 配置数据库驱动
 data.setDriverName("com.mysql.cj.jdbc.Driver");
 // 配置数据库连接用户名
 data.setUsername("root");
 // 配置数据库链接密码
 data.setPassword("123456");
 auto.setDataSource(data);

然后,进行第三步:包配置

  // 包配置 (需要修改)
  PackageConfig pack = new PackageConfig();
  // 配置父包名
  pack.setParent("com.sumer");
  // 配置模块名
  pack.setModuleName("");
  // 配置 entity 包名
  pack.setEntity("entity");
  // 配置 mapper 包名
  pack.setMapper("mapper");
  // 配置 service 包名
  pack.setService("service");
  // 配置 controller 包名
  pack.setController("controller");
  auto.setPackageInfo(pack);

其次,还需要对数据库进行一些映射操作:策略配置

// 策略配置(数据库表配置)
StrategyConfig sql = new StrategyConfig();
// 指定表名(可指定多个表名,用,分隔开来)(添加数据库表)
sql.setInclude("user","job");
// 配置数据表与实体类名之间映射的策略
sql.setNaming(NamingStrategy.underline_to_camel);
// 配置数据库表的字段与实体类的属性名之间的映射的策略
sql.setColumnNaming(NamingStrategy.underline_to_camel);
// 配置 lombok 模式
sql.setEntityLombokModel(true);
// 配置 rest 风格的控制器 (@RestController)
sql.setRestControllerStyle(true);
// 配置驼峰转连字符
sql.setControllerMappingHyphenStyle(true);
// 配置表名前缀,生成实体时去除表前缀
sql.setTablePrefix("");
auto.setStrategy(sql);

最终,执行代码生成命令

auto.execute();

整个代码

package com.sumer;

import com.baomidou.mybatisplus.annotation.IdType;
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.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import org.junit.jupiter.api.Test;

public class TextCodeGenerate {  // 代码生成器测试类

    @Test
    void autoGenerate(){
        // 代码生成器
        AutoGenerator auto = new AutoGenerator();

        // 全局配置
        GlobalConfig glob = new GlobalConfig();
        // 填写代码生成的目录  (需要修改)
        String projectPath = "E:\\JavaBook\\spring-mybatisPlus-study";
        // 拼接出代码最终输出的目录
        glob.setOutputDir(projectPath + "/src/main/java");
        // 配置开发者信息 (可选)  (需要修改)
        glob.setAuthor("sumer");
        // 配置是否打开目录 false 为不打开 (可选)
        glob.setOpen(false);
        // 重新生成文件时是否覆盖(重要) (可选)
        glob.setFileOverride(true);
        // 配置文件生成策略 此处为 ASSIGN_ID (可选)
        glob.setIdType(IdType.ASSIGN_ID);
        // 配置日期类型 此处为 ONLY_DATE (可选)
        glob.setDateType(DateType.ONLY_DATE);
        // 默认生成service 会有I前缀
        glob.setServiceName("%sService");
        auto.setGlobalConfig(glob);

        // 数据源配置 (需要修改)
        DataSourceConfig data = new DataSourceConfig();
        // 配置数据库url 地址
        data.setUrl("jdbc:mysql://localhost:3306/sumerPlus?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=Asia/Shanghai");
        // 配置数据库驱动
        data.setDriverName("com.mysql.cj.jdbc.Driver");
        // 配置数据库连接用户名
        data.setUsername("root");
        // 配置数据库链接密码
        data.setPassword("123456");
        auto.setDataSource(data);

        // 包配置 (需要修改)
        PackageConfig pack = new PackageConfig();
        // 配置父包名
        pack.setParent("com.sumer");
        // 配置模块名
        pack.setModuleName("");
        // 配置 entity 包名
        pack.setEntity("entity");
        // 配置 mapper 包名
        pack.setMapper("mapper");
        // 配置 service 包名
        pack.setService("service");
        // 配置 controller 包名
        pack.setController("controller");
        auto.setPackageInfo(pack);

        // 策略配置(数据库表配置)
        StrategyConfig sql = new StrategyConfig();
        // 指定表名(可指定多个表名,用,分隔开来)(添加数据库表)
        sql.setInclude("user","job");
        // 配置数据表与实体类名之间映射的策略
        sql.setNaming(NamingStrategy.underline_to_camel);
        // 配置数据库表的字段与实体类的属性名之间的映射的策略
        sql.setColumnNaming(NamingStrategy.underline_to_camel);
        // 配置 lombok 模式
        sql.setEntityLombokModel(true);
        // 配置 rest 风格的控制器 (@RestController)
        sql.setRestControllerStyle(true);
        // 配置驼峰转连字符
        sql.setControllerMappingHyphenStyle(true);
        // 配置表名前缀,生成实体时去除表前缀
        sql.setTablePrefix("");
        auto.setStrategy(sql);

        // 执行代码生成操作
        auto.execute();

    }

}

这个时候,你会看到这样子
在这里插入图片描述
这个时候,自动化配置就好了,最后,记得在执行程序入口处添加mapper路径,指定要变成实现类的接口所在的包

在这里插入图片描述
这时候,就能快乐的去进行后端编写了!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值