已修改5个文件
已删除36个文件
已添加6个文件
6812 ■■■■■ 文件已修改
LICENSE 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
README.md 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/pom.xml 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
bin/clean.bat 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
bin/package.bat 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
bin/run.bat 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml 62 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project.md 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/pom.xml 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/PlusCodeGenerator.java 162 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/resources/templates/controller.Java.ftl 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/resources/templates/entity.java.ftl 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/resources/templates/mapper.xml.ftl 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/resources/templates/serviceImpl.java.ftl 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/pom.xml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/pom.xml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/pom.xml 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/java/com/ruoyi/generator/PlusCodeGenerator.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/java/com/ruoyi/generator/config/GenConfig.java 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java 263 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTable.java 385 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTableColumn.java 373 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/GenTableColumnMapper.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/GenTableMapper.java 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableColumnServiceImpl.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java 531 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableColumnService.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableService.java 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/java/com/ruoyi/generator/util/GenUtils.java 257 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityInitializer.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityUtils.java 408 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/resources/generator.yml.example 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/resources/mapper/generator/GenTableColumnMapper.xml 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/resources/mapper/generator/GenTableMapper.xml 210 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/resources/vm/java/controller.java.vm 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/resources/vm/java/domain.java.vm 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/resources/vm/java/mapper.java.vm 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/resources/vm/java/service.java.vm 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/resources/vm/java/serviceImpl.java.vm 169 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/resources/vm/java/sub-domain.java.vm 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/resources/vm/js/api.js.vm 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/resources/vm/sql/sql.vm 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/resources/vm/vue/index-tree.vue.vm 505 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/resources/vm/vue/index.vue.vm 602 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/resources/vm/vue/v3/index-tree.vue.vm 474 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/resources/vm/vue/v3/index.vue.vm 590 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/resources/vm/xml/mapper.xml.vm 140 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LICENSE
ÎļþÒÑɾ³ý
README.md
ÎļþÒÑɾ³ý
basic-server/pom.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>ruoyi</artifactId>
        <groupId>com.ruoyi</groupId>
        <version>3.8.9</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>basic-server</artifactId>
    <dependencies>
        <!-- é€šç”¨å·¥å…·-->
        <dependency>
            <groupId>com.ruoyi</groupId>
            <artifactId>ruoyi-common</artifactId>
        </dependency>
        <!-- æ ¸å¿ƒæ¨¡å—-->
        <dependency>
            <groupId>com.ruoyi</groupId>
            <artifactId>ruoyi-framework</artifactId>
        </dependency>
        <!-- ç³»ç»Ÿæ¨¡å—-->
        <dependency>
            <groupId>com.ruoyi</groupId>
            <artifactId>ruoyi-system</artifactId>
        </dependency>
    </dependencies>
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>
</project>
bin/clean.bat
ÎļþÒÑɾ³ý
bin/package.bat
ÎļþÒÑɾ³ý
bin/run.bat
ÎļþÒÑɾ³ý
pom.xml
@@ -35,6 +35,8 @@
        <jakarta.version>6.0.0</jakarta.version>
        <springdoc.version>2.6.0</springdoc.version>
        <postgresql.version>42.7.3</postgresql.version>
        <mybatis-plus.version>3.5.12</mybatis-plus.version>
        <freemarker.version>2.3.30</freemarker.version>
    </properties>
    <!-- ä¾èµ–声明 -->
@@ -70,13 +72,7 @@
                <artifactId>pagehelper-spring-boot-starter</artifactId>
                <version>${pagehelper.boot.version}</version>
            </dependency>
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>${mybatis-spring-boot.version}</version>
            </dependency>
            <dependency>
                <groupId>com.mysql</groupId>
                <artifactId>mysql-connector-j</artifactId>
@@ -158,13 +154,6 @@
                <version>${ruoyi.version}</version>
            </dependency>
            <!-- ä»£ç ç”Ÿæˆ-->
            <dependency>
                <groupId>com.ruoyi</groupId>
                <artifactId>ruoyi-generator</artifactId>
                <version>${ruoyi.version}</version>
            </dependency>
            <!-- æ ¸å¿ƒæ¨¡å—-->
            <dependency>
                <groupId>com.ruoyi</groupId>
@@ -192,16 +181,59 @@
                <version>${postgresql.version}</version>
            </dependency>
            <!--基础模块-->
            <dependency>
                <groupId>com.ruoyi</groupId>
                <artifactId>basic-server</artifactId>
                <version>${ruoyi.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <!--  å…¨å±€å¼•å…¥  -->
    <dependencies>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <scope>provided</scope>
        </dependency>
        <!-- MyBatis-Plus æ ¸å¿ƒä¾èµ– -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-core</artifactId>
            <version>3.5.12</version> <!-- ä¸Žä½ çš„ Spring Boot å…¼å®¹çš„版本 -->
        </dependency>
        <!--mybatis-plus-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
            <version>${mybatis-plus.version}</version>
        </dependency>
        <!--mybatis-plus代码生成器-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>${mybatis-plus.version}</version>
        </dependency>
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>${freemarker.version}</version>
        </dependency>
    </dependencies>
    <modules>
        <module>ruoyi-admin</module>
        <module>ruoyi-framework</module>
        <module>ruoyi-system</module>
        <module>ruoyi-quartz</module>
        <module>ruoyi-generator</module>
        <module>ruoyi-common</module>
        <module>basic-server</module>
    </modules>
    <packaging>pom</packaging>
project.md
@@ -44,7 +44,7 @@
```
请在每一个模块的src/main/resources/db/migration/postgresql下创建sql文件,没有请手动新增目录
迁移文件命名规则V2023072000000__create_table_note_template.sql
迁移文件命名规则V2023072000000__create_table_note_template.sql æ•°å­—为年月日时分秒,非时间戳
开发时期可修改历史sql脚本,投产请使用新增sql文件修改数据库,禁止直接修改数据库
ruoyi-admin/pom.xml
@@ -74,18 +74,24 @@
            <artifactId>ruoyi-quartz</artifactId>
        </dependency>
        <!-- ä»£ç ç”Ÿæˆ-->
        <dependency>
            <groupId>com.ruoyi</groupId>
            <artifactId>ruoyi-generator</artifactId>
        </dependency>
        <!-- postgresql驱动包 -->
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
        </dependency>
        <!-- FreeMarker æ¨¡æ¿å¼•擎 -->
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.31</version> <!-- å¯æ ¹æ®éœ€è¦è°ƒæ•´ç‰ˆæœ¬ -->
        </dependency>
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.3</version>
        </dependency>
    </dependencies>
ruoyi-admin/src/main/java/com/ruoyi/PlusCodeGenerator.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,162 @@
package com.ruoyi;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import com.baomidou.mybatisplus.generator.fill.Column;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
/**
 * MyBatis-Plus ä»£ç ç”Ÿæˆå™¨
 * åŠŸèƒ½ï¼šæ ¹æ®æ•°æ®åº“è¡¨ç»“æž„è‡ªåŠ¨ç”ŸæˆEntity、Mapper、Service、Controller等代码
 * ä¿®å¤ï¼šè§£å†³Freemarker模板中generateService变量缺失的问题
 */
@SpringBootApplication
public class PlusCodeGenerator {
    // æ•°æ®åº“配置
    private static final String DB_URL = "jdbc:postgresql://lunor.cn:5431/ruoyi-java";
    private static final String DB_USERNAME = "test";
    private static final String DB_PASSWORD = "chj123456";
    // é¡¹ç›®åŸºç¡€é…ç½®
    private static final String BASE_PACKAGE = "com.ruoyi";
    private static final String MODULE_NAME = "basic"; // æ¨¡å—名
    public static void main(String[] args) {
        String projectPath = System.getProperty("user.dir"); // èŽ·å–é¡¹ç›®æ ¹è·¯å¾„
        String path = "basic-server"; // æ¨¡å—名称
        String table = "test"; // è¡¨åï¼Œå¤šä¸ªè¡¨é€—号隔开
        // ä»£ç è¾“出路径配置
        String outputBasePath = Paths.get(projectPath, path, "src", "main", "java").toString();
        String outputResourcePath = Paths.get(projectPath, path, "src", "main", "resources", "mapper").toString();
        // ä»£ç ç”Ÿæˆæ ¸å¿ƒé…ç½®
        FastAutoGenerator.create(DB_URL, DB_USERNAME, DB_PASSWORD)
                .globalConfig(builder -> {
                    builder.author("ruoyi") // ä½œè€…信息
                            .outputDir(outputBasePath) // ä»£ç è¾“出目录
                            .dateType(DateType.ONLY_DATE) // æ—¥æœŸç±»åž‹
                            .commentDate("yyyy-MM-dd") // æ³¨é‡Šæ—¥æœŸæ ¼å¼
                            .disableOpenDir(); // ç¦æ­¢è‡ªåŠ¨æ‰“å¼€è¾“å‡ºç›®å½•
                })
                .packageConfig(builder -> {
                    builder.parent(BASE_PACKAGE) // åŸºç¡€åŒ…名
                            .moduleName(MODULE_NAME) // æ¨¡å—名
                            .entity("entity") // Entity包名
                            .mapper("mapper") // Mapper包名
                            .service("service") // Service包名
                            .serviceImpl("service.impl") // Service实现类包名
                            .controller("controller") // Controller包名
                            .pathInfo(Collections.singletonMap(
                                    OutputFile.xml,
                                    outputResourcePath // Mapper XML输出路径
                            ));
                })
                .strategyConfig(builder -> {
                    builder.addInclude(table) // è¦ç”Ÿæˆçš„表名
                            .addTablePrefix("t_", "sys_") // è¿‡æ»¤è¡¨å‰ç¼€
                            // å®žä½“类配置
                            .entityBuilder()
                            .superClass("com.ruoyi.common.core.domain.BaseEntity") // ç»§æ‰¿åŸºç±»
                            .addSuperEntityColumns("create_by", "create_time", "update_by", "update_time") // æŽ’除基类字段
                            .enableLombok() // å¯ç”¨Lombok
                            .naming(NamingStrategy.underline_to_camel) // è¡¨åè½¬é©¼å³°
                            .columnNaming(NamingStrategy.underline_to_camel) // åˆ—名转驼峰
                            .enableFileOverride() // å…è®¸è¦†ç›–文件
                            .logicDeleteColumnName("deleted") // é€»è¾‘删除字段
                            .addTableFills(
                                    // è‡ªåŠ¨å¡«å……é…ç½®
                                    new Column("create_by", FieldFill.INSERT), // åˆ›å»ºäººï¼Œæ’入时填充
                                    new Column("update_by", FieldFill.INSERT_UPDATE), // æ›´æ–°äººï¼Œæ’入和更新时填充
                                    new Column("create_time", FieldFill.INSERT), // åˆ›å»ºæ—¶é—´ï¼Œæ’入时填充
                                    new Column("update_time", FieldFill.INSERT_UPDATE) // æ›´æ–°æ—¶é—´ï¼Œæ’入和更新时填充
                            )
                            .idType(IdType.AUTO) // ä¸»é”®ç­–ç•¥
                            .enableTableFieldAnnotation() // å¯ç”¨å­—段注解
                            // æŽ§åˆ¶å™¨é…ç½®
                            .controllerBuilder()
                            .enableFileOverride() // å…è®¸è¦†ç›–
                            .enableRestStyle() // ç”ŸæˆRESTful风格控制器
                            // Service配置
                            .serviceBuilder()
                            .formatServiceFileName("%sService") // Service接口命名格式
                            .enableFileOverride() // å…è®¸è¦†ç›–
                            .formatServiceImplFileName("%sServiceImpl") // Service实现类命名格式
                            .enableFileOverride() // å…è®¸è¦†ç›–
                            // Mapper配置
                            .mapperBuilder()
                            .enableFileOverride() // å…è®¸è¦†ç›–
                            .enableMapperAnnotation() // å¯ç”¨@Mapper注解
                            .enableBaseResultMap() // å¯ç”¨åŸºç¡€ResultMap
                            .enableBaseColumnList() // å¯ç”¨åŸºç¡€ColumnList
                            .formatMapperFileName("%sMapper") // Mapper接口命名格式
                            .formatXmlFileName("%sMapper") // Mapper XML命名格式
                            .enableFileOverride(); // å…è®¸è¦†ç›–
                })
                // é…ç½®è‡ªå®šä¹‰æ¨¡æ¿
                .templateConfig(builder -> {
                    builder
                            .entity("/templates/entity.java") // å®žä½“类模板
                            .xml("/templates/mapper.xml") // Mapper XML模板
                            .controller("/templates/controller.java") // æŽ§åˆ¶å™¨æ¨¡æ¿
                            .serviceImpl("/templates/serviceImpl.java"); // Service实现类模板
                })
                // æ³¨å…¥æ¨¡æ¿å˜é‡
                .injectionConfig(builder -> {
                    Map<String, Object> customMap = new HashMap<>();
                    customMap.put("superEntityColumns", Arrays.asList(
                            "create_by", "create_time", "update_by", "update_time"
                    )); // åŸºç±»å­—段
                    customMap.put("idType", "AUTO"); // ä¸»é”®ç±»åž‹
                    customMap.put("superEntityClass", "com.ruoyi.common.core.domain.BaseEntity"); // åŸºç±»å…¨è·¯å¾„
                    customMap.put("author", "ruoyi"); // ä½œè€…信息
                    customMap.put("packageName", BASE_PACKAGE + "." + MODULE_NAME); // åŒ…名
                    customMap.put("tableName", table); // è¡¨å
                    // æ–°å¢žï¼šè§£å†³Freemarker模板中generateService变量缺失的问题
                    // æŽ§åˆ¶Service实现类是否实现Service接口
                    boolean generateService = true;
                    customMap.put("generateService", generateService);
                    builder.customMap(customMap);
                })
                .templateEngine(new FreemarkerTemplateEngine()) // ä½¿ç”¨Freemarker模板引擎
                .execute(); // æ‰§è¡Œä»£ç ç”Ÿæˆ
        // åŽå¤„理:修复实体类的完全限定名问题
        try {
            Path entityPath = Paths.get(outputBasePath, "com/ruoyi/basic/entity/Test.java");
            if (Files.exists(entityPath)) {
                String content = Files.readString(entityPath);
                content = content.replace(
                        "extends com.ruoyi.common.core.domain.BaseEntity",
                        "extends BaseEntity"
                ); // ç®€åŒ–基类引用
                Files.writeString(entityPath, content);
            }
        } catch (IOException e) {
            System.err.println("⚠️ ä¿®å¤å®žä½“类失败: " + e.getMessage());
        }
        System.out.println("✅ ä»£ç ç”Ÿæˆå®Œæˆï¼æ–‡ä»¶å·²è¾“出到:" + outputBasePath);
    }
}
ruoyi-admin/src/main/resources/templates/controller.Java.ftl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
package ${package.Controller};
import org.springframework.web.bind.annotation.RequestMapping;
import lombok.AllArgsConstructor;
<#if restControllerStyle>
    import org.springframework.web.bind.annotation.RestController;
<#else>
    import org.springframework.stereotype.Controller;
</#if>
<#if superControllerClassPackage??>
    import ${superControllerClassPackage};
</#if>
/**
* <p>
    * ${table.comment!} å‰ç«¯æŽ§åˆ¶å™¨
    * </p>
*
* @author ${author}
* @since ${date}
*/
<#if restControllerStyle>
@RestController
<#else>
@Controller
</#if>
@AllArgsConstructor
@RequestMapping("<#if package.ModuleName?? && package.ModuleName != "">/${package.ModuleName}</#if>/<#if controllerMappingHyphenStyle>${controllerMappingHyphen}<#else>${table.entityPath}</#if>")
<#if kotlin>
    class ${table.controllerName}<#if superControllerClass??> : ${superControllerClass}()</#if>
<#else>
    <#if superControllerClass??>
        public class ${table.controllerName} extends ${superControllerClass} {
    <#else>
        public class ${table.controllerName} {
    </#if>
    }
</#if>
ruoyi-admin/src/main/resources/templates/entity.java.ftl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
package ${package.Entity};
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
<#if superEntityClass?? && superEntityClass != "">
    import ${superEntityClass};
</#if>
<#list table.fields as field>
    <#if field.propertyType == "LocalDateTime">
        import java.time.LocalDateTime;
        <#break>
    </#if>
</#list>
/**
* ${table.comment!} å®žä½“ç±»
*
* @author ${author!"admin"}
* @date ${.now?string("yyyy-MM-dd")}
*/
@Data
@TableName("${table.name}")
public class ${entity} <#if superEntityClass?? && superEntityClass != "">extends ${superEntityClass?substring(superEntityClass?last_index_of(".") + 1)}</#if> {
private static final long serialVersionUID = 1L;
<#list table.fields as field>
<#-- ä¿®å¤ï¼šæ·»åŠ  superEntityColumns å­˜åœ¨æ€§æ£€æŸ¥ -->
    <#if superEntityColumns?? && !superEntityColumns?seq_contains(field.name)>
        /**
        * ${field.comment!}
        */
        <#if field.keyFlag>
            @TableId(value = "${field.name}", type = IdType.${idType!"AUTO"})
        <#else>
            @TableField(value = "${field.name}"<#if field.fill?? && field.fill != "">, fill = FieldFill.${field.fill?upper_case}</#if>)
        </#if>
        <#if field.logicDeleteField>
            @TableLogic
        </#if>
        private ${field.propertyType} ${field.propertyName};
    </#if>
</#list>
}
ruoyi-admin/src/main/resources/templates/mapper.xml.ftl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="${package.Mapper}.${table.mapperName}">
    <#if enableCache>
        <!-- å¼€å¯äºŒçº§ç¼“å­˜ -->
        <cache type="${cacheClassName}"/>
    </#if>
    <#if baseResultMap>
        <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
        <resultMap id="BaseResultMap" type="${package.Entity}.${entity}">
            <#list table.fields as field>
                <#if field.keyFlag><#--生成主键排在第一位-->
                    <id column="${field.name}" property="${field.propertyName}" />
                </#if>
            </#list>
            <#list table.commonFields as field><#--生成公共字段 -->
                <result column="${field.name}" property="${field.propertyName}" />
            </#list>
            <#list table.fields as field>
                <#if !field.keyFlag><#--生成普通字段 -->
                    <result column="${field.name}" property="${field.propertyName}" />
                </#if>
            </#list>
        </resultMap>
    </#if>
    <#if baseColumnList>
        <!-- é€šç”¨æŸ¥è¯¢ç»“果列 -->
        <sql id="Base_Column_List">
            <#list table.commonFields as field>
                ${field.columnName},
            </#list>
            ${table.fieldNames}
        </sql>
    </#if>
</mapper>
ruoyi-admin/src/main/resources/templates/serviceImpl.java.ftl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
package ${package.ServiceImpl};
import ${package.Entity}.${entity};
import ${package.Mapper}.${table.mapperName};
<#if generateService>
    import ${package.Service}.${table.serviceName};
</#if>
import ${superServiceImplClassPackage};
import org.springframework.stereotype.Service;
import lombok.RequiredArgsConstructor;
/**
* <p>
    * ${table.comment!} æœåŠ¡å®žçŽ°ç±»
    * </p>
*
* @author ${author}
* @since ${date}
*/
@Service
@RequiredArgsConstructor
<#if kotlin>
    open class ${table.serviceImplName} : ${superServiceImplClass}<${table.mapperName}, ${entity}>()<#if generateService>, ${table.serviceName}</#if> {
    }
<#else>
    public class ${table.serviceImplName} extends ${superServiceImplClass}<${table.mapperName}, ${entity}><#if generateService> implements ${table.serviceName}</#if> {
    }
</#if>
ruoyi-common/pom.xml
@@ -128,13 +128,7 @@
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
            <version>3.5.10</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-jsqlparser</artifactId>
            <version>3.5.10</version>
            <version>3.5.12</version>
        </dependency>
    </dependencies>
ruoyi-framework/pom.xml
@@ -53,6 +53,18 @@
            <artifactId>oshi-core</artifactId>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
            <version>3.5.12</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-extension</artifactId>
            <version>3.5.6</version>
        </dependency>
        <!-- ç³»ç»Ÿæ¨¡å—-->
        <dependency>
            <groupId>com.ruoyi</groupId>
ruoyi-generator/pom.xml
ÎļþÒÑɾ³ý
ruoyi-generator/src/main/java/com/ruoyi/generator/PlusCodeGenerator.java
ÎļþÒÑɾ³ý
ruoyi-generator/src/main/java/com/ruoyi/generator/config/GenConfig.java
ÎļþÒÑɾ³ý
ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java
ÎļþÒÑɾ³ý
ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTable.java
ÎļþÒÑɾ³ý
ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTableColumn.java
ÎļþÒÑɾ³ý
ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/GenTableColumnMapper.java
ÎļþÒÑɾ³ý
ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/GenTableMapper.java
ÎļþÒÑɾ³ý
ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableColumnServiceImpl.java
ÎļþÒÑɾ³ý
ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java
ÎļþÒÑɾ³ý
ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableColumnService.java
ÎļþÒÑɾ³ý
ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableService.java
ÎļþÒÑɾ³ý
ruoyi-generator/src/main/java/com/ruoyi/generator/util/GenUtils.java
ÎļþÒÑɾ³ý
ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityInitializer.java
ÎļþÒÑɾ³ý
ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityUtils.java
ÎļþÒÑɾ³ý
ruoyi-generator/src/main/resources/generator.yml.example
ÎļþÒÑɾ³ý
ruoyi-generator/src/main/resources/mapper/generator/GenTableColumnMapper.xml
ÎļþÒÑɾ³ý
ruoyi-generator/src/main/resources/mapper/generator/GenTableMapper.xml
ÎļþÒÑɾ³ý
ruoyi-generator/src/main/resources/vm/java/controller.java.vm
ÎļþÒÑɾ³ý
ruoyi-generator/src/main/resources/vm/java/domain.java.vm
ÎļþÒÑɾ³ý
ruoyi-generator/src/main/resources/vm/java/mapper.java.vm
ÎļþÒÑɾ³ý
ruoyi-generator/src/main/resources/vm/java/service.java.vm
ÎļþÒÑɾ³ý
ruoyi-generator/src/main/resources/vm/java/serviceImpl.java.vm
ÎļþÒÑɾ³ý
ruoyi-generator/src/main/resources/vm/java/sub-domain.java.vm
ÎļþÒÑɾ³ý
ruoyi-generator/src/main/resources/vm/js/api.js.vm
ÎļþÒÑɾ³ý
ruoyi-generator/src/main/resources/vm/sql/sql.vm
ÎļþÒÑɾ³ý
ruoyi-generator/src/main/resources/vm/vue/index-tree.vue.vm
ÎļþÒÑɾ³ý
ruoyi-generator/src/main/resources/vm/vue/index.vue.vm
ÎļþÒÑɾ³ý
ruoyi-generator/src/main/resources/vm/vue/v3/index-tree.vue.vm
ÎļþÒÑɾ³ý
ruoyi-generator/src/main/resources/vm/vue/v3/index.vue.vm
ÎļþÒÑɾ³ý
ruoyi-generator/src/main/resources/vm/xml/mapper.xml.vm
ÎļþÒÑɾ³ý