# mybatis-freemarker-generator
**Repository Path**: yangmenglin/mybatis-freemarker-generator
## Basic Information
- **Project Name**: mybatis-freemarker-generator
- **Description**: 通过freemarker自动代码生成entity,mapper,xml,service
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2023-07-21
- **Last Updated**: 2025-08-22
## Categories & Tags
**Categories**: Uncategorized
**Tags**: MyBatis, 代码生成
## README
# mybatis-freemarker-generator
#### 介绍
- 通过freemarker自动代码生成entity,mapper,xml,service 
- 支持`swagger3`,`lombok`
- 支持`mysql`,`sqlserver`数据库
- 支持`mybatis`,`mybatis-plus`
- 支持实体继承类转换
- 支持导出表结构的Markdown与Word文件
#### 当前版本
1.0.2
#### 相关依赖包
```xml
    
      com.microsoft.sqlserver
      mssql-jdbc
      10.2.1.jre8
      runtime
    
    
      mysql
      mysql-connector-java
      8.0.33
      runtime
    
    
      org.freemarker
      freemarker
      2.3.32
    
    
      org.apache.commons
      commons-lang3
      3.12.0
    
```
项目结构
```
mybatis-freemarker-generator
├─src
  └─main
      ├─java
      │  └─com
      │      └─yml
      │          └─mybatis
      │              └─gererator
      │                  ├─config // 配置
      │                  ├─meta   // 元数据
      │                  ├─service // 接口
      │                  └─util    // 工具类
      └─resources
          └─template  // 模板文件
```
#### 使用说明
**安装**
将代码拉至本地,使用maven本地打包,maven版本建议3.8+,jdk11+
**引入本依赖**
```xml
        
            com.yml
            mybatis-freemarker-generator
            ${lastVersion}
        
```
**代码生成**
详细配置可参照`config`目录下各个配置说明
以下为样例
```java
import com.yml.mybatis.gererator.constant.OrmType;
import com.yml.mybatis.gererator.meta.DataSourceInfo;
import com.yml.mybatis.gererator.util.YmlAutoGenerator;
/**
 * mybaits-plus代码自动生成
 *
 * @author YML
 * @since 2023-04-08 21:24
 */
public class MyBatisPlusCodeGenerator {
    
    public static void generator(String moduleName,String parentPacket,String... tables) throws Exception {
        DataSourceInfo dataSource = new DataSourceInfo(
                "jdbc:sqlserver://localhost:1433;databaseName=tt;encrypt=false",
                "sa",
                "123456");
        YmlAutoGenerator.create(dataSource)
                .globalConfig(builder -> {
                    builder.javaPath("src/main/java")
                            .mapperPath("src/main/java")
                            .mapperXmlPath("src/main/resources")
                            .basePackage(parentPacket)
                            .author("杨")
                            .modulePath(moduleName)
                            .ormType(OrmType.MYBATIS_PLUS)
                            .ignorePrefix("HM_")
                    ;
                })
                .entityConfig(builder -> {
                    builder.entityPackage("entity")
                            .tables(tables);
                })
                .mapperConfig(builder -> {
                    builder.mapperFormat("%sCommonMapper")
                            .mapperXmlPackage("mapper")
                            .mapperPackage("mapper");
                })
                .serviceConfig(builder -> {
                    builder.servicePackage("service")
                            .serviceImplPackage("service.impl")
                            .serviceFormat("I%sCommonService")
                            .serviceImplFormat("%sCommonServiceImpl");
                })
                .execute();
    }
    public static void main(String[] args) throws Exception {
        generator("commons","com.yml.commons","HM_MemberCopy");
    }
}
```
**导出Markdown或Word**
以下为样例
```java
    public static void main(String[] args) throws Exception {
        DataSourceInfo info = new DataSourceInfo(
                "jdbc:sqlserver://localhost:1433;databaseName=tt;encrypt=false",
                "sa",
                "123456");
        ExportUtils.exportAllDbInfoToWord(info,null);
        ExportUtils.exportAllDbInfoToWord(info,null);
    }
```
#### 参与贡献
1.  Fork 本仓库
2.  新建 Feat_xxx 分支
3.  提交代码
4.  新建 Pull Request