diff --git a/lab-70-db-doc/lab-70-db-doc-screw-03/pom.xml b/lab-70-db-doc/lab-70-db-doc-screw-03/pom.xml
new file mode 100644
index 00000000..bdeee894
--- /dev/null
+++ b/lab-70-db-doc/lab-70-db-doc-screw-03/pom.xml
@@ -0,0 +1,40 @@
+
+
+
+ lab-70-db-doc
+ cn.iocoder.springboot.labs
+ 1.0-SNAPSHOT
+
+ 4.0.0
+
+ lab-70-db-doc-screw-03
+
+
+
+
+ cn.smallbun.screw
+ screw-core
+ 1.0.5
+
+
+ cn.smallbun.screw
+ screw-extension
+ 1.0.5
+
+
+
+
+ com.zaxxer
+ HikariCP
+ 3.4.5
+
+
+ mysql
+ mysql-connector-java
+ 8.0.22
+
+
+
+
diff --git a/lab-70-db-doc/lab-70-db-doc-screw-03/src/main/java/ScrewMain.java b/lab-70-db-doc/lab-70-db-doc-screw-03/src/main/java/ScrewMain.java
new file mode 100644
index 00000000..3a144630
--- /dev/null
+++ b/lab-70-db-doc/lab-70-db-doc-screw-03/src/main/java/ScrewMain.java
@@ -0,0 +1,72 @@
+import cn.smallbun.screw.core.Configuration;
+import cn.smallbun.screw.core.engine.EngineConfig;
+import cn.smallbun.screw.core.engine.EngineFileType;
+import cn.smallbun.screw.core.engine.EngineTemplateType;
+import cn.smallbun.screw.core.execute.DocumentationExecute;
+import cn.smallbun.screw.core.process.ProcessConfig;
+import cn.smallbun.screw.extension.pojo.PojoConfiguration;
+import cn.smallbun.screw.extension.pojo.execute.PojoExecute;
+import cn.smallbun.screw.extension.pojo.strategy.HumpNameStrategy;
+import com.zaxxer.hikari.HikariConfig;
+import com.zaxxer.hikari.HikariDataSource;
+
+import javax.sql.DataSource;
+import java.util.Arrays;
+import java.util.Collections;
+
+public class ScrewMain {
+
+ private static final String DB_URL = "jdbc:mysql://400-infra.server.iocoder.cn:3306";
+ private static final String DB_NAME = "mall_system";
+ private static final String DB_USERNAME = "root";
+ private static final String DB_PASSWORD = "3WLiVUBEwTbvAfsh";
+
+ private static final String FILE_OUTPUT_DIR = "/Users/yunai/screw_test";
+ private static final String JAVA_CLASS_PACKAGE = "cn.iocoder.dataobject";
+
+ public static void main(String[] args) {
+ // 创建 screw 的配置
+ PojoConfiguration config = PojoConfiguration.builder()
+ .path(FILE_OUTPUT_DIR) // 生成 POJO 相关的目录
+ .packageName(JAVA_CLASS_PACKAGE) // 包名
+ .nameStrategy(new HumpNameStrategy()) // 包名策略
+ .useLombok(false) // 是否使用 Lombok
+ .dataSource(buildDataSource()) // 数据源
+ .processConfig(buildProcessConfig()) // 处理配置
+ .build();
+
+ // 执行 screw,生成 POJO 实体类
+ new PojoExecute(config).execute();
+ }
+
+ /**
+ * 创建数据源
+ */
+ private static DataSource buildDataSource() {
+ // 创建 HikariConfig 配置类
+ HikariConfig hikariConfig = new HikariConfig();
+ hikariConfig.setDriverClassName("com.mysql.cj.jdbc.Driver");
+ hikariConfig.setJdbcUrl(DB_URL + "/" + DB_NAME);
+ hikariConfig.setUsername(DB_USERNAME);
+ hikariConfig.setPassword(DB_PASSWORD);
+ hikariConfig.addDataSourceProperty("useInformationSchema", "true"); // 设置可以获取 tables remarks 信息
+ // 创建数据源
+ return new HikariDataSource(hikariConfig);
+ }
+
+ /**
+ * 创建 screw 的处理配置,一般可忽略
+ * 指定生成逻辑、当存在指定表、指定表前缀、指定表后缀时,将生成指定表,其余表不生成、并跳过忽略表配置
+ */
+ private static ProcessConfig buildProcessConfig() {
+ return ProcessConfig.builder()
+ .designatedTableName(Collections.emptyList()) // 根据名称指定表生成
+ .designatedTablePrefix(Collections.emptyList()) //根据表前缀生成
+ .designatedTableSuffix(Collections.emptyList()) // 根据表后缀生成
+ .ignoreTableName(Arrays.asList("test_user", "test_group")) // 忽略表名
+ .ignoreTablePrefix(Collections.singletonList("test_")) // 忽略表前缀
+ .ignoreTableSuffix(Collections.singletonList("_test")) // 忽略表后缀
+ .build();
+ }
+
+}
diff --git a/lab-70-db-doc/pom.xml b/lab-70-db-doc/pom.xml
index 1efc92b6..55f7b46c 100644
--- a/lab-70-db-doc/pom.xml
+++ b/lab-70-db-doc/pom.xml
@@ -15,6 +15,7 @@
lab-70-db-doc-screw-01
lab-70-db-doc-screw-02
+ lab-70-db-doc-screw-03