写一份mybatisplus最全全的代码生成器
时间: 2023-09-23 11:05:24 浏览: 172
### 回答1:
好的,以下是一份最全的MybatisPlus代码生成器:
```java
package com.example.generator;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
import com.baomidou.mybatisplus.generator.config.po.TableFill;
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import java.util.ArrayList;
import java.util.List;
public class CodeGenerator {
public static void main(String[] args) {
// 代码生成器
AutoGenerator mpg = new AutoGenerator();
// 全局配置
GlobalConfig gc = new GlobalConfig();
String projectPath = System.getProperty("user.dir");
gc.setOutputDir(projectPath + "/src/main/java");
gc.setAuthor("your name");
gc.setOpen(false);
gc.setFileOverride(true);
gc.setBaseResultMap(true);
gc.setBaseColumnList(true);
gc.setEntityName("%sDO");
gc.setMapperName("%sDao");
gc.setXmlName("%sMapper");
gc.setDateType(DateType.ONLY_DATE);
gc.setIdType(IdType.ID_WORKER);
mpg.setGlobalConfig(gc);
// 数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setDbType(DbType.MYSQL);
dsc.setUrl("jdbc:mysql://localhost:3306/mybatis_plus?useUnicode=true&useSSL=false&characterEncoding=utf8");
dsc.setDriverName("com.mysql.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("root");
dsc.setTypeConvert(new MySqlTypeConvert());
mpg.setDataSource(dsc);
// 包配置
PackageConfig pc = new PackageConfig();
pc.setParent("com.example");
pc.setEntity("entity");
pc.setMapper("dao");
pc.setXml("mapper");
pc.setService("service");
pc.setServiceImpl("service.impl");
pc.setController("controller");
mpg.setPackageInfo(pc);
// 策略配置
StrategyConfig strategy = new StrategyConfig();
strategy.setNaming(NamingStrategy.underline_to_camel);
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
strategy.setEntityLombokModel(true);
strategy.setRestControllerStyle(true);
strategy.setSuperEntityClass("com.example.common.BaseDO");
strategy.setSuperMapperClass("com.baomidou.mybatisplus.core.mapper.BaseMapper");
strategy.setSuperServiceClass("com.baomidou.mybatisplus.extension.service.IService");
strategy.setSuperServiceImplClass("com.baomidou.mybatisplus.extension.service.impl.ServiceImpl");
strategy.setSuperControllerClass("com.example.common.BaseController");
strategy.setInclude("user");
strategy.setControllerMappingHyphenStyle(true);
List<TableFill> tableFillList = new ArrayList<>();
tableFillList.add(new TableFill("gmt_create", FieldFill.INSERT));
tableFillList.add(new TableFill("gmt_modified", FieldFill.INSERT_UPDATE));
strategy.setTableFillList(tableFillList);
strategy.setVersionFieldName("version");
strategy.setLogicDeleteFieldName("deleted");
mpg.setStrategy(strategy);
// 模板配置
TemplateConfig templateConfig = new TemplateConfig();
templateConfig.setEntity("/templates/entity.java");
templateConfig.setService("/templates/service.java");
templateConfig.setServiceImpl("/templates/serviceImpl.java");
templateConfig.setController("/templates/controller.java");
templateConfig.setMapper("/templates/mapper.java");
templateConfig.setXml("/templates/mapper.xml");
mpg.setTemplate(templateConfig);
// 自定义模板引擎,需要引入相应的依赖
mpg.setTemplateEngine(new FreemarkerTemplateEngine());
// 模板引擎需要的属性配置
TemplateConfig tc = new TemplateConfig();
tc.setXml(null);
mpg.setTemplate(tc);
// 注入自定义配置,可以在 VM 中使用 cfg.abc 设置的值
InjectionConfig injectionConfig = new InjectionConfig() {
@Override
public void initMap() {
// to do nothing
}
};
// 自定义输出配置
List<FileOutConfig> focList = new ArrayList<>();
// 自定义配置会被优先输出
focList.add(new FileOutConfig("/templates/mapper.xml.vm") {
@Override
public String outputFile(TableInfo tableInfo) {
// 自定义输入文件名称
return projectPath + "/src/main/resources/mapper/" + tableInfo.getEntityName() + "Mapper.xml";
}
});
injectionConfig.setFileOutConfigList(focList);
mpg.setCfg(injectionConfig);
// 执行生成
mpg.execute();
}
}
```
其中,需要根据实际情况修改数据库连接信息、包名、表名等参数。执行 main 方法即可生成相应的代码。该代码生成器包含了MybatisPlus的所有常用配置,并且使用了自定义模板引擎和输出配置实现更灵活的代码生成。
### 回答2:
MyBatis Plus是一个基于MyBatis的优秀的持久层框架,它提供了很多便捷的开发工具,包括代码生成器。下面是一份最全的MyBatis Plus代码生成器的示例代码:
首先,引入相关的依赖:
```
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>最新版本</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>最新版本</version>
</dependency>
```
创建一个Generator类,配置代码生成器的相关参数:
```java
public class Generator {
public static void main(String[] args) {
// 1. 全局配置
GlobalConfig globalConfig = new GlobalConfig();
globalConfig.setOutputDir(System.getProperty("user.dir") + "/src/main/java");
globalConfig.setAuthor("Your Name");
globalConfig.setOpen(false);
// 2. 数据源配置
DataSourceConfig dataSourceConfig = new DataSourceConfig();
dataSourceConfig.setUrl("jdbc:mysql://localhost:3306/db_name");
dataSourceConfig.setDriverName("com.mysql.jdbc.Driver");
dataSourceConfig.setUsername("root");
dataSourceConfig.setPassword("password");
// 3. 策略配置
StrategyConfig strategyConfig = new StrategyConfig();
strategyConfig.setNaming(NamingStrategy.underline_to_camel);
strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);
strategyConfig.setEntityLombokModel(true);
// 4. 包名配置
PackageConfig packageConfig = new PackageConfig();
packageConfig.setParent("com.example");
packageConfig.setModuleName("demo");
// 5. 代码生成器配置
AutoGenerator autoGenerator = new AutoGenerator();
autoGenerator.setGlobalConfig(globalConfig);
autoGenerator.setDataSource(dataSourceConfig);
autoGenerator.setStrategy(strategyConfig);
autoGenerator.setPackageInfo(packageConfig);
// 6. 执行代码生成器
autoGenerator.execute();
}
}
```
在上面的代码中,我们配置了全局属性、数据源属性、策略配置和包名配置,然后创建了一个代码生成器对象并执行生成代码的操作。
以上就是一份使用MyBatis Plus的最全的代码生成器示例,你可以根据自己的需求,修改相关配置来生成需要的代码。
### 回答3:
MyBatis Plus是一款开源的持久层框架,提供了丰富的功能和便利的API,能够极大地简化数据库操作。下面是一份使用MyBatis Plus的完整代码生成器。
首先,我们需要引入MyBatis Plus的依赖包到项目中。可以使用Maven或Gradle配置文件添加以下依赖:
```
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>x.x.x</version>
</dependency>
```
接下来,创建一个代码生成器类,用于配置和生成代码。代码生成器可以通过读取数据库表结构自动生成实体类、Mapper接口和XML映射文件。
```java
public class CodeGenerator {
public static void main(String[] args) {
// 数据源配置
String url = "jdbc:mysql://localhost:3306/database";
String username = "root";
String password = "123456";
String driverName = "com.mysql.jdbc.Driver";
// 数据源
DataSourceConfig dataSourceConfig = new DataSourceConfig();
dataSourceConfig.setDbType(DbType.MYSQL);
dataSourceConfig.setUrl(url);
dataSourceConfig.setUsername(username);
dataSourceConfig.setPassword(password);
dataSourceConfig.setDriverName(driverName);
// 全局配置
GlobalConfig globalConfig = new GlobalConfig();
String outputDir = System.getProperty("user.dir") + "/src/main/java";
globalConfig.setOutputDir(outputDir);
globalConfig.setAuthor("Your Name");
globalConfig.setOpen(false);
// 数据表配置
StrategyConfig strategyConfig = new StrategyConfig();
String[] tableNames = {"table1", "table2"};
strategyConfig.setInclude(tableNames);
// 包名配置
PackageConfig packageConfig = new PackageConfig();
packageConfig.setParent("com.example");
packageConfig.setEntity("entity");
packageConfig.setMapper("mapper");
packageConfig.setXml("mapper.xml");
// 代码生成器
AutoGenerator autoGenerator = new AutoGenerator();
autoGenerator.setDataSource(dataSourceConfig);
autoGenerator.setGlobalConfig(globalConfig);
autoGenerator.setStrategy(strategyConfig);
autoGenerator.setPackageInfo(packageConfig);
// 执行生成代码
autoGenerator.execute();
}
}
```
以上代码中,配置了数据库连接信息、输出路径、作者等等。通过设置数据表名称,我们可以生成对应的实体类、Mapper接口和XML映射文件。最后,调用execute()方法执行生成代码的操作。
请注意,代码生成器是一个独立的Java类,需要单独运行。在运行代码生成器之前,确保数据库连接正确,并且依赖包已经成功导入。
通过以上代码生成器,我们可以轻松地生成MyBatis Plus的完整代码,大大节省了手动创建实体类、Mapper和XML文件的时间。同时,MyBatis Plus还提供了更多高级功能和配置选项,可以根据具体需求进行扩展和调整。
阅读全文