ewnewq commited on
Commit
c56b9f4
·
verified ·
1 Parent(s): 1d2d740

MyBatis-Flex 代码生成器

Browse files

简介
在 mybatis-flex 中,有了一个名称为 mybatis-flex-codegen 的模块,提供了可以通过数据库表,生成代码的功能。当我们把数据库表设计完成后, 就可以使用其快速生成 Entity、 Mapper、 Service、 Controller 等产物。

除此之外,我们还可以通过扩展生成更多的产物,文档参考 #添加其他产物的生成。

AI 代码生成功能
另外:MyBatis-Flex 也提供了一个在线的 AI 代码生成器,可以通过您的产品(或项目)需求描述,自动帮你生成完整的 SpringBoot + MyBatisFlex 项目代码以及 SQL 脚本,下载导入到开发工具即可使用。

内测地址:https://ai.mybatis-flex.com

快速开始
在使用之前,我们需要先添加 mybatis-flex-codegen 的 Maven 依赖:

xml
<dependency>
<groupId>com.mybatis-flex</groupId>
<artifactId>mybatis-flex-codegen</artifactId>
<version>1.11.3</version>
</dependency>
同时需要添加数据源的 Maven 依赖和 jdbc 驱动依赖:

xml
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>4.0.3</version>
</dependency>

<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.0.32</version>
</dependency>
然后,编写一个任意带有 main 方法的类,如下所示:

java
public class Codegen {

public static void main(String[] args) {
//配置数据源
HikariDataSource dataSource = new HikariDataSource();
dataSource.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/your-database?characterEncoding=utf-8");
dataSource.setUsername("root");
dataSource.setPassword("******");

//创建配置内容,两种风格都可以。
GlobalConfig globalConfig = createGlobalConfigUseStyle1();
//GlobalConfig globalConfig = createGlobalConfigUseStyle2();

//通过 datasource 和 globalConfig 创建代码生成器
Generator generator = new Generator(dataSource, globalConfig);

//生成代码
generator.generate();
}

public static GlobalConfig createGlobalConfigUseStyle1() {
//创建配置内容
GlobalConfig globalConfig = new GlobalConfig();

//设置根包
globalConfig.setBasePackage("com.test");

//设置表前缀和只生成哪些表
globalConfig.setTablePrefix("tb_");
globalConfig.setGenerateTable("tb_account", "tb_account_session");

//设置生成 entity 并启用 Lombok
globalConfig.setEntityGenerateEnable(true);
globalConfig.setEntityWithLombok(true);
//设置项目的JDK版本,项目的JDK为14及以上时建议设置该项,小于14则可以不设置
globalConfig.setEntityJdkVersion(17);

//设置生成 mapper
globalConfig.setMapperGenerateEnable(true);

//可以单独配置某个列
ColumnConfig columnConfig = new ColumnConfig();
columnConfig.setColumnName("tenant_id");
columnConfig.setLarge(true);
columnConfig.setVersion(true);
globalConfig.setColumnConfig("tb_account", columnConfig);

return globalConfig;
}

public static GlobalConfig createGlobalConfigUseStyle2() {
//创建配置内容
GlobalConfig globalConfig = new GlobalConfig();

//设置根包
globalConfig.getPackageConfig()
.setBasePackage("com.test");

//设置表前缀和只生成哪些表,setGenerateTable 未配置时,生成所有表
globalConfig.getStrategyConfig()
.setTablePrefix("tb_")
.setGenerateTable("tb_account", "tb_account_session");

//设置生成 entity 并启用 Lombok
globalConfig.enableEntity()
.setWithLombok(true)
.setJdkVersion(17);

//设置生成 mapper
globalConfig.enableMapper();

//可以单独配置某个列
ColumnConfig columnConfig = new ColumnConfig();
columnConfig.setColumnName("tenant_id");
columnConfig.setLarge(true);
columnConfig.setVersion(true);
globalConfig.getStrategyConfig()
.setColumnConfig("tb_account", columnConfig);

return globalConfig;
}
}
注意:由于 MyBatis-Flex 的 APT 功能会自动帮我们生成了 Mapper 的 Java 类,如果我们在代码生成器中选择生成 Mapper, 则建议把 APT 的 Mapper 生成功能给关闭掉,否则系统中会存在两份一样功能的 Mapper。

关闭 APT 的 Mapper 类文件生成,请参考:APT 设置章节

功能介绍
在 Mybatis-Flex 的代码生成器中,支持如下 8 种类型的的产物生成:

Entity 实体类
Mapper 映射类
TableDef 表定义辅助类
Service 服务类
ServiceImpl 服务实现类
Controller 控制类
MapperXml 文件
package-info.java 文件
除此之外,我们可以添加扩展生成更多类型的产物,文档参考 #添加其他产物的生成。

启用或关闭某种类型产物的生成,代码如下:

java
// 开启 Entity 的生成
globalConfig.enableEntity();
// 关闭 Entity 的生成
globalConfig.disableEntity();
所有方法均支持链式调用配置,代码如下:

java
// 设置生成 Entity 并启用 Lombok、设置父类
globalConfig.enableEntity()
.setWithLombok(true)
.setSuperClass(BaseEntity.class);
全局配置 GlobalConfig
详细配置
获取配置 描述
getJavadocConfig() 注释配置
getPackageConfig() 包配置
getStrategyConfig() 策略配置
getTemplateConfig() 模板配置
getEntityConfig() Entity 生成配置
getMapperConfig() Mapper 生成配置
getServiceConfig() Service 生成配置
getServiceImplConfig() ServiceImpl 生成配置
getControllerConfig() Controller 生成配置
getTableDefConfig() TableDef 生成配置
getMapperXmlConfig() MapperXml 生成配置
java
globalConfig.getPackageConfig()
.setSourceDir("D://files/java")
.setBasePackage("com.your.domain");
启用生成 描述
enableEntity() 启用 Entity 生成
enableMapper() 启用 Mapper 生成
enableService() 启用 Service 生成
enableServiceImpl() 启用 ServiceImpl 生成
enableController() 启用 Controller 生成
enableTableDef() 启用 TableDef 生成
enableMapperXml() 启用 MapperXml 生成
启用生成之后可以继续链式进行配置,例如:

java
// 设置生成 Entity 并启用 Lombok、设置父类
globalConfig.enableEntity()
.setWithLombok(true)
.setSuperClass(BaseEntity.class);
注释配置 JavadocConfig
配置 描述 默认值
setAuthor(String) 作者(可填写日期、版本号等,设置为 "" 则不添加

@author
) System.getProperty("user.name")
setSince(String) 自(可填写日期、版本号等,设置为 "" 则不添加

@since
) yyyy-MM-dd 格式的日期
setTableCommentFormat(Function) 表注释格式化 原表注释
setColumnCommentFormat(Function) 字段注释格式化 原字段注释
setEntityPackage(String) Entity 包注释 "实体类层(Entity)软件包。"
setMapperPackage(String) Mapper 包注释 "映射层(Mapper)软件包。"
setServicePackage(String) Service 包注释 "服务层(Service)软件包。"
setServiceImplPackage(String) ServiceImpl 包注释 "服务层实现(ServiceImpl)软件包。"
setControllerPackage(String) Controller 包注释 "控制层(Controller)软件包。"
setTableDefPackage(String) TableDef 包注释 "表定义层(TableDef)软件包。"
java
globalConfig.getJavadocConfig()
.setAuthor("Your Name")
.setSince("1.0.1");
包配置 PackageConfig
配置 描述 默认值
setSourceDir(String) 文件输出目录 System.getProperty("user.dir") + "/src/main/java"
setBasePackage(String) 根包名 "com.mybatisflex"
setEntityPackage(String) Entity 包名 getBasePackage() + ".entity"
setMapperPackage(String) Mapper 包名 getBasePackage() + ".mapper"
setServicePackage(String) Service 包名 getBasePackage() + ".service"
setServiceImplPackage(String) ServiceImpl 包名 getBasePackage() + ".service.impl"
setControllerPackage(String) Controller 包名 getBasePackage() + ".controller"
setTableDefPackage(String) TableDef 包名 getEntityPackage() + ".tables"
setMapperXmlPath(String) MapperXml 路径 System.getProperty("user.dir") + "/src/main/resources/mapper"
java
globalConfig.getPackageConfig()
.setSourceDir("D:\\files\\java")
.setBasePackage("com.your.domain");
策略配置 StrategyConfig
配置 描述 默认值
setTablePrefix(String) 数据库表前缀,多个前缀用英文逗号(,) 隔开 null
setLogicDeleteColumn(String) 逻辑删除的默认字段名称 null
setVersionColumn(String) 乐观锁的字段名称 null
setGenerateForView(boolean) 是否生成视图映射 false
setTableConfig(TableConfig) 单独为某张表添加独立的配置 null
setColumnConfig(ColumnConfig) 设置某个列的全局配置 null
setGenerateSchema(String) 生成哪个schema下的表 null
setGenerateTables(String...) 生成哪些表,白名单 null
setUnGenerateTables(String...) 不生成哪些表,黑名单 null
setIgnoreColumns(String...) 需要忽略的列,父类定义的字段 null
java
globalConfig.getStrategyConfig()
.setGenerateSchema("schema")
.setTablePrefix("sys_")
.setGenerateTables("sys_user","sys_dept");
setGenerateTables 和 setUnGenerateTables 未配置时,生成所有表。

模板配置 TemplateConfig
配置 描述 默认值
setTemplate(ITemplate)
setEntity(String) Entity 模板路径 "/templates/enjoy/entity.tpl"
setMapper(String) Mapper 模板路径 "/templates/enjoy/mapper.tpl"
setService(String) Service 模板路径 "/templates/enjoy/service.tpl"
setServiceImpl(String) ServiceImpl 模板路径 "/templates/enjoy/serviceImpl.tpl"
setController(String) Controller 模板路径 "/templates/enjoy/controller.tpl"
setTableDef(String) TableDef 模板路径 "/templates/enjoy/tableDef.tpl"
setMapperXml(String) MapperXml 模板路径 "/templates/enjoy/mapperXml.tpl"
java
globalConfig.getTemplateConfig()
.setTemplate(new FreeMarkerTemplate())
.setEntity("D:\\your-template-file\\my-entity.tpl");
Entity 生成配置 EntityConfig
配置 描述 默认值
setE

Files changed (5) hide show
  1. components/footer.js +7 -6
  2. components/navbar.js +6 -5
  3. index.html +70 -36
  4. script.js +4 -8
  5. style.css +5 -0
components/footer.js CHANGED
@@ -43,14 +43,15 @@ class CustomFooter extends HTMLElement {
43
  <footer>
44
  <div class="footer-content">
45
  <div class="footer-links">
46
- <a href="#hero">Home</a>
47
- <a href="#features">Features</a>
48
- <a href="#generator">Generator</a>
49
- <a href="https://mybatis-flex.com" target="_blank">Documentation</a>
 
50
  <a href="https://github.com/mybatis-flex" target="_blank">GitHub</a>
51
  </div>
52
- <p class="copyright">&copy; 2024 FlexGen Studio. Powered by MyBatis Flex. All rights reserved.</p>
53
- </div>
54
  </footer>
55
  `;
56
  }
 
43
  <footer>
44
  <div class="footer-content">
45
  <div class="footer-links">
46
+ <a href="#hero">首页</a>
47
+ <a href="#features">特性</a>
48
+ <a href="#generator">生成器</a>
49
+ <a href="#documentation">文档</a>
50
+ <a href="https://mybatis-flex.com" target="_blank">官方文档</a>
51
  <a href="https://github.com/mybatis-flex" target="_blank">GitHub</a>
52
  </div>
53
+ <p class="copyright">&copy; 2024 FlexGen Studio. 基于 MyBatis Flex 构建。保留所有权利。</p>
54
+ </div>
55
  </footer>
56
  `;
57
  }
components/navbar.js CHANGED
@@ -70,12 +70,13 @@ class CustomNavbar extends HTMLElement {
70
  <nav>
71
  <div class="logo">FlexGen Studio</div>
72
  <ul>
73
- <li><a href="#hero">Home</a></li>
74
- <li><a href="#features">Features</a></li>
75
- <li><a href="#generator">Generator</a></li>
76
- <li><a href="https://mybatis-flex.com" target="_blank">Docs</a></li>
 
77
  </ul>
78
- </nav>
79
  `;
80
  }
81
  }
 
70
  <nav>
71
  <div class="logo">FlexGen Studio</div>
72
  <ul>
73
+ <li><a href="#hero">首页</a></li>
74
+ <li><a href="#features">特性</a></li>
75
+ <li><a href="#generator">生成器</a></li>
76
+ <li><a href="#documentation">文档</a></li>
77
+ <li><a href="https://mybatis-flex.com" target="_blank">文档</a></li>
78
  </ul>
79
+ </nav>
80
  `;
81
  }
82
  }
index.html CHANGED
@@ -3,8 +3,8 @@
3
  <head>
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>FlexGen Studio - MyBatis Flex Code Generator</title>
7
- <link rel="icon" type="image/x-icon" href="/static/favicon.ico">
8
  <link rel="stylesheet" href="style.css">
9
  <script src="https://cdn.tailwindcss.com"></script>
10
  <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
@@ -13,7 +13,6 @@
13
  </head>
14
  <body class="min-h-screen bg-gradient-to-br from-blue-50 to-indigo-100">
15
  <custom-navbar></custom-navbar>
16
-
17
  <!-- Hero Section -->
18
  <section id="hero" class="relative min-h-screen flex items-center justify-center overflow-hidden">
19
  <div class="absolute inset-0 z-0" id="vanta-bg"></div>
@@ -22,75 +21,67 @@
22
  FlexGen Studio
23
  </h1>
24
  <p class="text-xl md:text-2xl text-gray-600 mb-8">
25
- Generate MyBatis Flex Code with Ease 🎯
26
  </p>
27
  <div class="flex flex-col sm:flex-row gap-4 justify-center">
28
  <a href="#generator" class="bg-blue-600 hover:bg-blue-700 text-white px-8 py-4 rounded-lg font-semibold text-lg transition-all duration-300 transform hover:scale-105 shadow-lg">
29
- Start Generating
30
  </a>
31
  <a href="#features" class="border-2 border-blue-600 text-blue-600 hover:bg-blue-600 hover:text-white px-8 py-4 rounded-lg font-semibold text-lg transition-all duration-300">
32
- Learn More
33
  </a>
34
  </div>
35
  </div>
36
  </section>
37
-
38
  <!-- Features Section -->
39
  <section id="features" class="py-20 bg-white">
40
  <div class="max-w-6xl mx-auto px-4">
41
- <h2 class="text-4xl font-bold text-center text-gray-800 mb-16">Why Choose FlexGen Studio?</h2>
42
  <div class="grid md:grid-cols-3 gap-8">
43
  <div class="text-center p-6">
44
  <div class="w-16 h-16 bg-blue-100 rounded-full flex items-center justify-center mx-auto mb-4">
45
- <i data-feather="zap" class="text-blue-600"></i>
46
  </div>
47
- <h3 class="text-xl font-semibold mb-4">Lightning Fast</h3>
48
- <p class="text-gray-600">Generate optimized MyBatis Flex code in seconds with our intelligent templates.</p>
49
  </div>
50
  <div class="text-center p-6">
51
  <div class="w-16 h-16 bg-green-100 rounded-full flex items-center justify-center mx-auto mb-4">
52
  <i data-feather="code" class="text-green-600"></i>
53
  </div>
54
- <h3 class="text-xl font-semibold mb-4">Clean Code</h3>
55
- <p class="text-gray-600">Production-ready, well-structured code following best practices and conventions.</p>
56
  </div>
57
  <div class="text-center p-6">
58
  <div class="w-16 h-16 bg-purple-100 rounded-full flex items-center justify-center mx-auto mb-4">
59
  <i data-feather="settings" class="text-purple-600"></i>
60
  </div>
61
- <h3 class="text-xl font-semibold mb-4">Customizable</h3>
62
- <p class="text-gray-600">Tailor the generated code to your specific project requirements and preferences.</p>
63
  </div>
64
  </div>
65
  </div>
66
  </section>
67
-
68
  <!-- Code Generator Section -->
69
  <section id="generator" class="py-20 bg-gray-50">
70
  <div class="max-w-6xl mx-auto px-4">
71
- <h2 class="text-4xl font-bold text-center text-gray-800 mb-16">Code Generator</h2>
72
- <div class="bg-white rounded-2xl shadow-xl p-8">
73
  <div class="grid lg:grid-cols-2 gap-8">
74
  <!-- Input Section -->
75
  <div class="space-y-6">
76
  <div>
77
- <label class="block text-sm font-medium text-gray-700 mb-2">Database Configuration</label>
78
- <div class="grid grid-cols-2 gap-4">
79
  <input type="text" placeholder="Database URL" class="w-full px-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent">
80
  <input type="text" placeholder="Username" class="w-full px-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent">
81
  </div>
82
  </div>
83
  <div>
84
- <label class="block text-sm font-medium text-gray-700 mb-2">Table Selection</label>
85
- <select class="w-full px-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent">
86
- <option>Select tables to generate...</option>
87
- <option>All tables</option>
88
- <option>Custom selection</option>
89
- </select>
90
- </div>
91
  <div>
92
- <label class="block text-sm font-medium text-gray-700 mb-2">Output Configuration</label>
93
- <div class="space-y-3">
94
  <label class="flex items-center">
95
  <input type="checkbox" class="rounded border-gray-300 text-blue-600 focus:ring-blue-500">
96
  <span class="ml-2">Generate Entity Classes</span>
@@ -109,25 +100,68 @@
109
  Generate Code
110
  </button>
111
  </div>
112
-
113
- <!-- Output Preview -->
114
- <div>
115
- <label class="block text-sm font-medium text-gray-700 mb-2">Generated Code Preview</label>
116
- <div class="bg-gray-900 rounded-lg p-4 h-96 overflow-auto">
117
  <pre id="code-output" class="text-green-400 text-sm font-mono">// Generated code will appear here...</pre>
118
  </div>
119
  <div class="mt-4 flex gap-3">
120
  <button onclick="copyCode()" class="flex-1 bg-gray-600 hover:bg-gray-700 text-white py-3 px-4 rounded-lg font-medium transition-colors">
121
  <i data-feather="copy" class="inline w-4 h-4 mr-2"></i>
122
- Copy Code
123
  </button>
124
  <button onclick="downloadCode()" class="flex-1 bg-green-600 hover:bg-green-700 text-white py-3 px-4 rounded-lg font-medium transition-colors">
125
  <i data-feather="download" class="inline w-4 h-4 mr-2"></i>
126
- Download
127
  </button>
128
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
129
  </div>
130
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
131
  </div>
132
  </div>
133
  </section>
 
3
  <head>
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>FlexGen Studio - MyBatis Flex 代码生成器</title>
7
+ <link rel="icon" type="image/x-icon" href="/static/favicon.ico">
8
  <link rel="stylesheet" href="style.css">
9
  <script src="https://cdn.tailwindcss.com"></script>
10
  <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
 
13
  </head>
14
  <body class="min-h-screen bg-gradient-to-br from-blue-50 to-indigo-100">
15
  <custom-navbar></custom-navbar>
 
16
  <!-- Hero Section -->
17
  <section id="hero" class="relative min-h-screen flex items-center justify-center overflow-hidden">
18
  <div class="absolute inset-0 z-0" id="vanta-bg"></div>
 
21
  FlexGen Studio
22
  </h1>
23
  <p class="text-xl md:text-2xl text-gray-600 mb-8">
24
+ 轻松生成 MyBatis Flex 代码 🎯
25
  </p>
26
  <div class="flex flex-col sm:flex-row gap-4 justify-center">
27
  <a href="#generator" class="bg-blue-600 hover:bg-blue-700 text-white px-8 py-4 rounded-lg font-semibold text-lg transition-all duration-300 transform hover:scale-105 shadow-lg">
28
+ 开始生成
29
  </a>
30
  <a href="#features" class="border-2 border-blue-600 text-blue-600 hover:bg-blue-600 hover:text-white px-8 py-4 rounded-lg font-semibold text-lg transition-all duration-300">
31
+ 了解更多
32
  </a>
33
  </div>
34
  </div>
35
  </section>
 
36
  <!-- Features Section -->
37
  <section id="features" class="py-20 bg-white">
38
  <div class="max-w-6xl mx-auto px-4">
39
+ <h2 class="text-4xl font-bold text-center text-gray-800 mb-16">为什么选择 FlexGen Studio?</h2>
40
  <div class="grid md:grid-cols-3 gap-8">
41
  <div class="text-center p-6">
42
  <div class="w-16 h-16 bg-blue-100 rounded-full flex items-center justify-center mx-auto mb-4">
43
+ <i data-feather="zap" class="text-blue-600"></i>
44
  </div>
45
+ <h3 class="text-xl font-semibold mb-4">闪电般快速</h3>
46
+ <p class="text-gray-600">使用智能模板,在几秒钟内生成优化的 MyBatis Flex 代码。</p>
47
  </div>
48
  <div class="text-center p-6">
49
  <div class="w-16 h-16 bg-green-100 rounded-full flex items-center justify-center mx-auto mb-4">
50
  <i data-feather="code" class="text-green-600"></i>
51
  </div>
52
+ <h3 class="text-xl font-semibold mb-4">简洁代码</h3>
53
+ <p class="text-gray-600">生产就绪、结构良好的代码,遵循最佳实践和约定。</p>
54
  </div>
55
  <div class="text-center p-6">
56
  <div class="w-16 h-16 bg-purple-100 rounded-full flex items-center justify-center mx-auto mb-4">
57
  <i data-feather="settings" class="text-purple-600"></i>
58
  </div>
59
+ <h3 class="text-xl font-semibold mb-4">高度可定制</h3>
60
+ <p class="text-gray-600">根据您的特定项目需求和偏好定制生成的代码。</p>
61
  </div>
62
  </div>
63
  </div>
64
  </section>
 
65
  <!-- Code Generator Section -->
66
  <section id="generator" class="py-20 bg-gray-50">
67
  <div class="max-w-6xl mx-auto px-4">
68
+ <h2 class="text-4xl font-bold text-center text-gray-800 mb-16">代码生成器</h2>
69
+ <div class="bg-white rounded-2xl shadow-xl p-8">
70
  <div class="grid lg:grid-cols-2 gap-8">
71
  <!-- Input Section -->
72
  <div class="space-y-6">
73
  <div>
74
+ <label class="block text-sm font-medium text-gray-700 mb-2">数据库配置</label>
75
+ <div class="grid grid-cols-2 gap-4">
76
  <input type="text" placeholder="Database URL" class="w-full px-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent">
77
  <input type="text" placeholder="Username" class="w-full px-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent">
78
  </div>
79
  </div>
80
  <div>
81
+ <label class="block text-sm font-medium text-gray-700 mb-2">表选择</label>
 
 
 
 
 
 
82
  <div>
83
+ <label class="block text-sm font-medium text-gray-700 mb-2">输出配置</label>
84
+ <div class="space-y-3">
85
  <label class="flex items-center">
86
  <input type="checkbox" class="rounded border-gray-300 text-blue-600 focus:ring-blue-500">
87
  <span class="ml-2">Generate Entity Classes</span>
 
100
  Generate Code
101
  </button>
102
  </div>
103
+ <!-- Output Preview -->
104
+ <div>
105
+ <label class="block text-sm font-medium text-gray-700 mb-2">生成代码预览</label>
106
+ <div class="bg-gray-900 rounded-lg p-4 h-96 overflow-auto">
 
107
  <pre id="code-output" class="text-green-400 text-sm font-mono">// Generated code will appear here...</pre>
108
  </div>
109
  <div class="mt-4 flex gap-3">
110
  <button onclick="copyCode()" class="flex-1 bg-gray-600 hover:bg-gray-700 text-white py-3 px-4 rounded-lg font-medium transition-colors">
111
  <i data-feather="copy" class="inline w-4 h-4 mr-2"></i>
112
+ 复制代码
113
  </button>
114
  <button onclick="downloadCode()" class="flex-1 bg-green-600 hover:bg-green-700 text-white py-3 px-4 rounded-lg font-medium transition-colors">
115
  <i data-feather="download" class="inline w-4 h-4 mr-2"></i>
116
+ 下载
117
  </button>
118
  </div>
119
+ </div>
120
+ </div>
121
+ </div>
122
+ </div>
123
+ </section>
124
+
125
+ <custom-footer></custom-footer>
126
+ <!-- Documentation Section -->
127
+ <section id="documentation" class="py-20 bg-white">
128
+ <div class="max-w-6xl mx-auto px-4">
129
+ <h2 class="text-4xl font-bold text-center text-gray-800 mb-16">MyBatis-Flex 代码生成器文档</h2>
130
+ <div class="bg-gray-50 rounded-2xl p-8">
131
+ <div class="grid md:grid-cols-2 gap-8">
132
+ <div class="space-y-6">
133
+ <div class="bg-blue-50 p-6 rounded-lg">
134
+ <h3 class="text-xl font-semibold mb-4">快速开始</h3>
135
+ <p class="text-gray-600 mb-4">添加 mybatis-flex-codegen 的 Maven 依赖:</p>
136
+ <pre class="bg-gray-900 text-green-400 p-4 rounded-lg text-sm">
137
+ <dependency>
138
+ <groupId>com.mybatis-flex</groupId>
139
+ <artifactId>mybatis-flex-codegen</artifactId>
140
+ <version>1.11.3</version>
141
+ </dependency></pre>
142
+ </div>
143
+ <div class="bg-green-50 p-6 rounded-lg">
144
+ <h3 class="text-xl font-semibold mb-4">AI 代码生成功能</h3>
145
+ <p class="text-gray-600 mb-4">MyBatis-Flex 提供了一个在线的 AI 代码生成��,可以通过您的产品需求描述,自动生成完整的 SpringBoot + MyBatisFlex 项目代码以及 SQL 脚本。</p>
146
+ <a href="https://ai.mybatis-flex.com" target="_blank" class="inline-block bg-blue-600 hover:bg-blue-700 text-white px-6 py-3 rounded-lg font-medium transition-colors">
147
+ 访问 AI 代码生成器
148
+ </a>
149
  </div>
150
  </div>
151
+ <div class="space-y-6">
152
+ <div class="bg-purple-50 p-6 rounded-lg">
153
+ <h3 class="text-xl font-semibold mb-4">支持生成的产物</h3>
154
+ <ul class="list-disc list-inside text-gray-600 space-y-2">
155
+ <li>Entity 实体类</li>
156
+ <li>Mapper 映射类</li>
157
+ <li>TableDef 表定义辅助类</li>
158
+ <li>Service 服务类</li>
159
+ <li>ServiceImpl 服务实现类</li>
160
+ <li>Controller 控制类</li>
161
+ <li>MapperXml 文件</li>
162
+ <li>package-info.java 文件</li>
163
+ </ul>
164
+ </div>
165
  </div>
166
  </div>
167
  </section>
script.js CHANGED
@@ -1,5 +1,4 @@
1
  // Shared JavaScript across all pages
2
-
3
  // Code generation function
4
  function generateCode() {
5
  const codeOutput = document.getElementById('code-output');
@@ -37,13 +36,12 @@ public class User {
37
  public LocalDateTime getUpdateTime() { return updateTime; }
38
  public void setUpdateTime(LocalDateTime updateTime) { this.updateTime = updateTime; }
39
  }`;
40
-
41
- codeOutput.textContent = sampleCode;
42
  codeOutput.classList.add('code-highlight');
43
  setTimeout(() => codeOutput.classList.remove('code-highlight'), 2000);
44
 
45
  // Show success notification
46
- showNotification('Code generated successfully!', 'success');
47
  }
48
 
49
  // Copy code to clipboard
@@ -55,8 +53,7 @@ function copyCode() {
55
  textArea.select();
56
  document.execCommand('copy');
57
  document.body.removeChild(textArea);
58
-
59
- showNotification('Code copied to clipboard!', 'success');
60
  }
61
 
62
  // Download generated code
@@ -71,8 +68,7 @@ function downloadCode() {
71
  a.click();
72
  document.body.removeChild(a);
73
  URL.revokeObjectURL(url);
74
-
75
- showNotification('Code downloaded successfully!', 'success');
76
  }
77
 
78
  // Notification system
 
1
  // Shared JavaScript across all pages
 
2
  // Code generation function
3
  function generateCode() {
4
  const codeOutput = document.getElementById('code-output');
 
36
  public LocalDateTime getUpdateTime() { return updateTime; }
37
  public void setUpdateTime(LocalDateTime updateTime) { this.updateTime = updateTime; }
38
  }`;
39
+ codeOutput.textContent = sampleCode;
 
40
  codeOutput.classList.add('code-highlight');
41
  setTimeout(() => codeOutput.classList.remove('code-highlight'), 2000);
42
 
43
  // Show success notification
44
+ showNotification('代码生成成功!', 'success');
45
  }
46
 
47
  // Copy code to clipboard
 
53
  textArea.select();
54
  document.execCommand('copy');
55
  document.body.removeChild(textArea);
56
+ showNotification('代码已复制到剪贴板!', 'success');
 
57
  }
58
 
59
  // Download generated code
 
68
  a.click();
69
  document.body.removeChild(a);
70
  URL.revokeObjectURL(url);
71
+ showNotification('代码下载成功!', 'success');
 
72
  }
73
 
74
  // Notification system
style.css CHANGED
@@ -1,3 +1,4 @@
 
1
  /* Shared styles across all pages */
2
  @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap');
3
 
@@ -6,6 +7,10 @@ body {
6
  scroll-behavior: smooth;
7
  }
8
 
 
 
 
 
9
  /* Custom scrollbar for code preview */
10
  #code-output::-webkit-scrollbar {
11
  width: 8px;
 
1
+
2
  /* Shared styles across all pages */
3
  @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap');
4
 
 
7
  scroll-behavior: smooth;
8
  }
9
 
10
+ /* Documentation section styles */
11
+ .bg-blue-50 { background-color: #eff6ff; }
12
+ .bg-green-50 { background-color: #f0fdf4; }
13
+ .bg-purple-50 { background-color: #faf5ff; }
14
  /* Custom scrollbar for code preview */
15
  #code-output::-webkit-scrollbar {
16
  width: 8px;