# tiny **Repository Path**: chmin/tiny ## Basic Information - **Project Name**: tiny - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: condition-update - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-27 - **Last Updated**: 2026-03-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Tiny 一个基于 Spring Boot 的低代码开发框架,支持数据库表扫描、代码自动生成(Java/TypeScript/Vue)、以及完整的 CRUD 操作。 ## 项目简介 Tiny 是一个轻量级的企业级开发框架,提供了以下核心功能: - **代码自动生成**:根据数据库表结构自动生成 Java、TypeScript、Vue 代码 - **灵活的 DAO 层**:提供 SimpleDao 和 JoinDao,支持链式查询 - **契约管理**:完整的合同管理模块 - **文件处理**:支持文件上传、下载、导入、导出 - **系统管理**:用户、角色、菜单、组织、字典等系统功能 ## 技术栈 - Java 17+ - Spring Boot - MySQL - Redis - Jackson ## 模块结构 ``` server/ ├── src/main/java/top/chmin/project/ │ ├── api/ # API 控制器 │ ├── build/ # 代码生成器 │ ├── config/ # 配置类 │ ├── contract/ # 合同模块 │ ├── core/ # 核心基类 │ ├── file/ # 文件模块 │ ├── other/ # 其他模块 │ └── system/ # 系统模块 ``` ## 核心特性 ### 1. 强大的 DAO 层 ```java // 简单查询 UserDao.Where where = UserDao.of().where(); List users = where.name().like("张三%").forSelect().list(); // 复杂关联查询 JoinDao joinDao = new JoinDao(joinTable); List results = joinDao._where .userName().eq("张三") .forSelect() .list(); ``` ### 2. 代码自动生成 框架包含完整的代码生成器,支持: - Java: Model、Dao、Api、Info - SQL: 建表语句 - TypeScript: 类型定义 - Vue: 页面组件 ### 3. 统一 API 规范 所有实体 API 遵循统一的 RESTful 风格: - `POST /xxx/save` - 保存 - `POST /xxx/page` - 分页查询 - `POST /xxx/updateById` - 更新 - `POST /xxx/selectById` - 查询单条 - `POST /xxx/deleteById` - 删除 ## 快速开始 ### 环境要求 - JDK 17+ - Maven 3.8+ - MySQL 8.0+ - Redis ### 配置数据库 在 `application.yml` 中配置数据源: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/tiny username: root password: your_password redis: host: localhost port: 6379 ``` ### 启动应用 ```bash cd server mvn spring-boot:run ``` ## 使用示例 ### 创建实体 ```java @Getter @Setter @Accessors(chain = true) public class User extends Model { private String username; private String password; private String email; @Override public void preSave() { // 保存前处理 } @Override public long save() { return UserDao.of()._insert.execute(); } } ``` ### 使用 DAO 查询 ```java // 分页查询 Page page = UserDao.of()._where .status().eq("active") .forSelect() .page(new Page<>(1, 10)); // 关联查询 List orders = orderDao._where .userId().eq(userId) .forSelect() .list(OrderVO.class); ``` ## 贡献指南 欢迎提交 Issue 和 Pull Request。 ## 许可证 MIT License