环境 SpringBoot2.0以上 mysql数据库
语录:做事的人和做梦的人最大的区别就是行动力
过程
一、添加依赖
<!--mybatis-plus start-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.0</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.4.0</version>
</dependency>
<!-- mybatis plus end-->
<!-- 生成器需要的模板引擎 start-->
<!--使用.ftl 模板-->
<!--<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.30</version>
</dependency>-->
<!-- 使用.btl 模板 -->
<!--<dependency>
<groupId>com.ibeetl</groupId>
<artifactId>beetl</artifactId>
<version>3.2.4.RELEASE</version>
</dependency>-->
<!--使用.vm 模板-->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.0</version>
</dependency>
<!-- 生成器需要的模板引擎 end-->
<!-- mysql start-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.21</version>
</dependency>
<!-- mysql end-->
二、创建生成器主类
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
/**
* @author: june
* @Date: 2020/12/10
* @Description: MP自动生成
*/
public class CodeGeneration {
//main函数
public static void main(String[] args) {
AutoGenerator autoGenerator = new AutoGenerator();
//全局配置
GlobalConfig gc = new GlobalConfig();
String oPath = System.getProperty("user.dir"); //得到当前项目的路径
gc.setOutputDir(oPath + "/src/main/java"); //生成文件的输出目录【默认 D 盘根目录】
gc.setOpen(false); //是否打开输出目录(生成完成后不弹出文件框) 默认为true
gc.setFileOverride(true); //是否覆盖已有文件 默认为false
gc.setActiveRecord(false); // 不需要ActiveRecord特性的请改为false
gc.setEnableCache(false); // XML 二级缓存
gc.setBaseResultMap(true); // XML ResultMap
gc.setBaseColumnList(false); // XML columList
gc.setAuthor("june"); // 作者
gc.setSwagger2(true); //开启 swagger2 模式 默认为false
/**
* 各层文件名称方式,例如: %sAction 生成 UserAction
* %s 为占位符
*/
gc.setControllerName("%sController");
gc.setServiceName("%sService");
gc.setServiceImplName("%sServiceImpl");
gc.setMapperName("%sMapper");
gc.setXmlName("%sMapper");
gc.setEntityName("%sVo");
autoGenerator.setGlobalConfig(gc);
// 数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setDbType(DbType.MYSQL); //设置数据库类型
dsc.setDriverName("com.mysql.cj.jdbc.Driver"); //驱动
dsc.setUsername("root"); //用户名
dsc.setPassword("root"); //密码
//指定数据库
dsc.setUrl("jdbc:mysql://127.0.0.1:3306/demo?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true");
autoGenerator.setDataSource(dsc);
// 策略配置
StrategyConfig strategy = new StrategyConfig();
strategy.setNaming(NamingStrategy.underline_to_camel); // 表名生成策略 驼峰
strategy.setColumnNaming(NamingStrategy.underline_to_camel);//列命名规范 驼峰
strategy.setInclude(new String[]{"tv_user","tv_user_cart"});// 需要生成代码的表
strategy.setEntityLombokModel(true); //【实体】是否为lombok模型(默认 false)
//设置父级类 如果有基础服务类就写该基础服务类地址 默认没有 其他亦然
//strategy.setSuperServiceClass("com.admin.sys.service.BaseService");
strategy.setSuperServiceClass("com.example.mybatisplusdemo.common.service.BaseService");
strategy.setSuperServiceImplClass("com.example.mybatisplusdemo.common.service.impl.BaseServiceImpl");
strategy.setSuperMapperClass("com.example.mybatisplusdemo.common.mapper.CoreMapper");
strategy.setSuperControllerClass("");
strategy.setSuperEntityClass("com.example.mybatisplusdemo.common.entity.BaseEntity");
strategy.setTablePrefix("tv_"); //去除表前缀
strategy.setFieldPrefix(""); //去除字段前缀
autoGenerator.setStrategy(strategy);
//模板路径配置项 默认路径为templates下 其他亦然
TemplateConfig tc = new TemplateConfig();
//tc.setController("/templates/admin/controller.java");templates.generator
tc.setMapper("");
autoGenerator.setTemplate(tc);
// 包配置
PackageConfig pc = new PackageConfig();
pc.setParent("com.example.mybatisplusdemo.modules.user"); //父包路径
pc.setController("controller");//设置在父包路径下的包名
pc.setService("service");
pc.setServiceImpl("service.impl");
pc.setMapper("mapper");
pc.setEntity("vo");
pc.setXml("mapper");
autoGenerator.setPackageInfo(pc);
// 执行生成
autoGenerator.execute();
}
}
三、启动SpringBoot项目 ,运行上面写的生成代码类CodeGeneration的main方法就可以生成啦!
如果还想在生成的entity、mapper、service、ServiceImpl、Controller中加点东西话,比如加方法之类的,可以往下看
可以去Mybatis-plus官网下载源码
https://gitee.com/baomidou/mybatis-plus或者https://github.com/baomidou/mybatis-plus
把红框中的代码复制到自己的项目中
下面是我的项目
因为我使用的模板引擎是velocity,对应的模板是.vm后缀的
freemarker对应.ftl 模板
beetl对应.btl 模板
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.0</version>
</dependency>
接下来把你想加入的东西写在模板中
这是我写例子 您还可以加变量、方法等。
然后 怎么让我们写的模板生效呢?