mybatis-plus自定义代码生成
时间: 2023-09-28 14:03:29 浏览: 60
mybatis-plus是一个支持自定义代码生成的框架。如果需要根据实体类生成自定义controller、service、mapper、entity文件,可以使用mybatis-plus的自定义引擎功能。具体使用方式如下:
1. 首先,引用mybatis-plus的源码,可以从以下链接获取:
2. 在项目中注入配置,在注入配置的过程中,可以使用自定义模板和map,根据项目需要进行封装。示例代码如下:
3. 使用自定义模板引擎,可以选择EnhanceVelocityTemplaEngine作为模板引擎。示例代码如下:
4. 确保正确引用了mybatis-plus,并设置了自定义引擎文件。自定义引擎文件可以是多种格式,一般使用vm资源。
通过以上步骤,你就可以使用mybatis-plus的自定义代码生成功能来生成自定义的controller、service、mapper、entity文件了。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
相关问题
MyBatis-Plus反向代码生成器、
好的,你想了解关于MyBatis-Plus反向代码生成器的相关信息吗?
MyBatis-Plus是MyBatis的增强工具包,提供了很多便捷的操作,其中之一就是反向代码生成器。反向代码生成器可以根据数据库表生成对应的Java实体类、Mapper接口、Service接口、ServiceImpl实现类等代码文件,极大地提高了开发效率。
使用MyBatis-Plus反向代码生成器,你只需要配置好数据库连接信息和相关参数,就能生成对应的代码文件。同时,MyBatis-Plus还提供了很多自定义配置的选项,可以根据需求灵活定制生成的代码文件。
需要注意的是,反向代码生成器只是生成代码的工具,生成的代码需要根据实际需求进行调整和完善。此外,反向代码生成器也不能完全取代手写代码的方式,需要开发者根据具体情况进行选择和使用。
mybatis-plus3.5.2代码生成器
MyBatis-Plus是一个MyBatis的增强工具,在MyBatis的基础上进行了扩展,提供了更加便捷的CRUD操作、分页、乐观锁、逻辑删除等功能。而MyBatis-Plus的代码生成器则是MyBatis-Plus中的一个子模块,用于生成基于MyBatis-Plus的CRUD代码。
MyBatis-Plus的代码生成器是一个基于Velocity模板引擎的代码生成器,支持生成Java、XML、SQL脚本等文件。使用MyBatis-Plus的代码生成器可以快速生成CRUD代码,减少手动编写代码的工作量。
下面是使用MyBatis-Plus3.5.2代码生成器生成代码的步骤:
1. 添加MyBatis-Plus的依赖
在pom.xml文件中添加以下依赖:
```xml
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.2</version>
</dependency>
```
2. 编写代码生成器配置文件
在src/main/resources目录下创建generator.properties文件,编写代码生成器的配置信息,例如:
```properties
# 数据库配置
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis_plus?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
jdbc.username=root
jdbc.password=root
# 代码生成器配置
outputDir=D:/code-generator
author=MyBatis-Plus
fileOverride=true
openDir=false
```
其中,jdbc.driver、jdbc.url、jdbc.username、jdbc.password是数据库的配置信息,outputDir是生成文件的输出目录,author是代码的作者,fileOverride是是否覆盖已有文件,openDir是是否打开输出目录。
3. 编写代码生成器模板文件
在src/main/resources/templates目录下创建模板文件,例如entity.java.vm、mapper.xml.vm、service.java.vm、serviceImpl.java.vm等,编写模板文件的内容。
模板文件中使用Velocity的语法,可以使用变量、条件语句、循环语句等,例如:
```java
package ${packageName};
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
/**
* ${tableComment}
*/
@Data
@TableName("${tableName}")
public class ${entityName} {
#foreach($column in $table.columns)
/**
* ${column.columnComment}
*/
private ${column.javaType} ${column.fieldName};
#end
}
```
在模板文件中,$packageName、$tableComment、$tableName、$entityName、$table.columns等都是变量,会根据生成器配置文件和数据库表的信息动态替换为具体的值。
4. 运行代码生成器
编写好配置文件和模板文件后,就可以运行代码生成器了。在Java代码中使用CodeGenerator类,并传入配置文件和模板文件的路径,即可启动代码生成器,例如:
```java
public class MybatisPlusGenerator {
public static void main(String[] args) {
String configFile = "generator.properties";
String templatePath = "/templates/%s.vm";
AutoGenerator generator = new AutoGenerator();
// 全局配置
GlobalConfig globalConfig = new GlobalConfig();
globalConfig.setAuthor(PropertyUtil.getProperty(configFile, "author"));
globalConfig.setFileOverride(Boolean.parseBoolean(PropertyUtil.getProperty(configFile, "fileOverride")));
globalConfig.setOpen(Boolean.parseBoolean(PropertyUtil.getProperty(configFile, "openDir")));
globalConfig.setOutputDir(PropertyUtil.getProperty(configFile, "outputDir"));
generator.setGlobalConfig(globalConfig);
// 数据源配置
DataSourceConfig dataSourceConfig = new DataSourceConfig();
dataSourceConfig.setDbType(DbType.MYSQL);
dataSourceConfig.setDriverName(PropertyUtil.getProperty(configFile, "jdbc.driver"));
dataSourceConfig.setUrl(PropertyUtil.getProperty(configFile, "jdbc.url"));
dataSourceConfig.setUsername(PropertyUtil.getProperty(configFile, "jdbc.username"));
dataSourceConfig.setPassword(PropertyUtil.getProperty(configFile, "jdbc.password"));
generator.setDataSource(dataSourceConfig);
// 包配置
PackageConfig packageConfig = new PackageConfig();
packageConfig.setParent(PropertyUtil.getProperty(configFile, "package"));
generator.setPackageInfo(packageConfig);
// 自定义配置
InjectionConfig injectionConfig = new InjectionConfig() {
@Override
public void initMap() {
}
};
injectionConfig.setFileOutConfigList(getFileOutConfigList(templatePath));
generator.setCfg(injectionConfig);
// 配置模板
TemplateConfig templateConfig = new TemplateConfig();
templateConfig.setXml(null);
generator.setTemplate(templateConfig);
// 策略配置
StrategyConfig strategyConfig = new StrategyConfig();
strategyConfig.setNaming(NamingStrategy.underline_to_camel);
strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);
strategyConfig.setEntityLombokModel(true);
strategyConfig.setRestControllerStyle(true);
strategyConfig.setInclude(PropertyUtil.getProperty(configFile, "tableNames").split(","));
generator.setStrategy(strategyConfig);
generator.execute();
}
private static List<FileOutConfig> getFileOutConfigList(String templatePath) {
List<FileOutConfig> fileOutConfigList = new ArrayList<>();
fileOutConfigList.add(new FileOutConfig(templatePath) {
@Override
public String outputFile(TableInfo tableInfo) {
return String.format("%s/%s%s", PropertyUtil.getProperty("generator.properties", "outputDir"),
tableInfo.getEntityName(), this.getSuffix());
}
});
return fileOutConfigList;
}
}
```
在代码中,使用AutoGenerator类配置全局配置、数据源配置、包配置、自定义配置、模板配置、策略配置等,然后调用execute()方法即可生成代码。
总结:使用MyBatis-Plus的代码生成器可以快速生成基于MyBatis-Plus的CRUD代码,减少手动编写代码的工作量,提高开发效率。需要注意的是,生成的代码只是基础代码,需要根据具体业务进行修改和优化。