# boot-demo **Repository Path**: bbio/boot-demo ## Basic Information - **Project Name**: boot-demo - **Description**: restfull风格api,crud无需写代码,基于spring-boot,spring-mvc,spring-data-jpa(hibernate实现),docker环境和部署脚本 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2017-09-18 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 数据库命名规范 ## 约定 * 所有数据库DDL、DML通过rr-db-migration工程来运行 * 提交线上的migration不允许修改,有任何错误,通过添加新的migration来修改 * 上线后如果发现的错误 **名字写错,通常需要跨2个上线版本** ``` 1.先加一个migration添加一个正确的字段在错误的字段后面,同时代码中加入entity,数据通过migration运行 2.等上一个版本的上线通过以后,再新建一个migration,把原有的错误的字段删除 ``` * 默认没有强制规定,varchar都可为空 ## 表名 * 复数 * 小写+下划线(_) * 不要rr前缀 ## 字段 * id, bigint(20),自增加 * 小写+下划线(_) * 尽量描述清楚 * 除了多对多ID关联的表,默认需要加上这几个字段 **Example:** ``` `created_by` bigint(20) DEFAULT NULL COMMENT '创建者', `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updated_by` bigint(20) DEFAULT NULL COMMENT '更新者', `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `active` tinyint(1) NOT NULL DEFAULT '1' COMMENT '激活标记', `deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '删除标记', `deleted_by` bigint(20) DEFAULT NULL COMMENT '删除者', `deleted_at` datetime NULL DEFAULT NULL COMMENT '删除时间' ``` ## 实体类 * 实体名称只要遵循上述规则,不需要指定@Columen注解,自动会将下划线的表字段名称转换成实体驼峰的字段 ## 禁止项 * 不写约束 * 不写View * 不写Trigger * 不写Function * 不写Store procedure # 工具使用 * rr-tools会放一些shell脚本工具,用来辅助快速生成代码或者相对应的文件,减少重复工作 ## scaffold-saas-api.sh * 生成完整api的框架, 大小写敏感 **scaffold-saas-api.sh create|remove entity_name** ``` cd rr-tools ./scaffold-saas-api.sh create Test Create Test 自动生成 rr-saas/rr-saas-api/src/main/java/com/rr/api/saas/controller/TestController.java rr-saas/rr-saas-api/src/main/java/com/rr/api/saas/dao/TestDAO.java rr-saas/rr-saas-api/src/main/java/com/rr/api/saas/domain/entity/Test.java rr-saas/rr-saas-api/src/main/java/com/rr/api/saas/domain/model/TestDTO.java rr-saas/rr-saas-api/src/main/java/com/rr/api/saas/service/TestService.java rr-saas/rr-saas-api/src/main/java/com/rr/api/saas/service/impl/DefaultTestService.java ./scaffold-saas-api.sh remove Test Remove Test 上述代码全部卸载 ``` ## ddl-migration.sh * 生成ddl的migration的文件名,格式 V[yyyyMMhhHHmmdd]__[input name].sql **ddl-migration.sh create [migration name]** ``` cd rr-tools ./ddl-migration.sh create add_user_table 按照当前时间生成migration的文件名 rr-db-migration/src/main/resources/migrations/V20170222134704__add_user_table.sql ``` ## dml-migration.sh * 生成dml的migration的文件名,同上