# java-demo **Repository Path**: shilei15926/java-demo ## Basic Information - **Project Name**: java-demo - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-10-28 - **Last Updated**: 2026-10-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Java CRUD 练习项目 基于 ECP、Spring Boot 3.5、MyBatis/JDBC、MySQL 和 jQuery 的目录数据维护示例,包含新增、修改、删除、查询、分页及备注字段。 现已接入本地真实登录及用户、角色、菜单权限管理。**首次启动需要设置初始超管密码,旧的前端模拟登录不能访问新的安全后端。** 启动配置、首次改密和接口清单见[权限管理后端接口](docs/权限管理后端接口.md)。 ## 环境要求 - JDK 21。 - Maven 3.9.x。 - MySQL 8,本机默认端口 3306。 - 能解析 `com.qidianjob.ecp:ecp-parent:1.0.0` 和 ECP 组件的公司 Maven 仓库配置。 本项目依赖公司 ECP 组件,不能仅依靠 Maven Central 完成构建。请在本机 Maven `settings.xml` 中配置公司的仓库、镜像和需要的认证信息;仓库凭据不放进源码。 ## 准备数据库 默认连接配置在 `src/main/resources/application.yml`: ```text 地址:localhost:3306 数据库:demo 账号:demo 密码:demo ``` 这组配置用于本机隔离练习,不用于生产环境。可由 MySQL 管理员执行: ```sql CREATE DATABASE IF NOT EXISTS demo CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci; CREATE USER IF NOT EXISTS 'demo'@'localhost' IDENTIFIED BY 'demo'; GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, INDEX, REFERENCES ON demo.* TO 'demo'@'localhost'; ``` 如果账号已经存在,确认其密码与配置一致。读、写两个数据源默认都使用同一个 `demo` 数据库。 应用启动时由 Flyway 自动执行 `src/main/resources/db/migration` 下的迁移: - V1:创建目录表。 - V2:写入两条初始数据。 - V3:增加 `remark` 备注字段。 - V4:创建移企付员工、额度账户、额度流水三张表,字段与约束说明见[移企付员工表设计](docs/移企付员工表设计.md)。 - V5:增加员工新增请求号及租户内唯一约束,支持新增请求安全重试。 - V6:扩展额度流水 SET 类型;已完成单人调额和冻结/启用,规则见[移企付调额与冻结接口](docs/移企付调额与冻结接口.md)。 - V7:增加批次幂等记录;批量调额、批量员工导入及校验见[批量调额与导入](docs/移企付批量调额与导入.md)。 - V8~V10:员工逻辑删除、银行卡及两级开卡审批。 - V11:用户、角色、菜单、关联关系、登录会话、审计及登录限速表;启动后初始化当前企业的内置角色与资源。 迁移由应用管理,无需在 Navicat 重复执行。已执行的迁移保持原样,后续表结构变更新建版本文件。 ## IntelliJ IDEA 运行 1. 作为 Maven 项目打开根目录的 `pom.xml`。 2. 项目 SDK、模块 SDK 和语言级别设置为普通 Java 21。 3. 配置 Maven 的设置文件与本地仓库,重新加载 Maven 项目。 4. 本地首次运行先执行 `powershell -NoProfile -ExecutionPolicy Bypass -File scripts/Initialize-LocalIam.ps1`,再选择共享运行配置 **ECP 本地开发**。它会读取不提交到Git的 `.local/iam.yml`。若使用自行创建的运行配置,则按[权限启动说明](docs/权限管理后端接口.md)配置环境变量。 5. 等待 `Started ComponentExampleApplication`。 共享运行配置使用项目的 JDK,不绑定某台电脑的 JDK 安装路径。运行前停止其他占用 8092 端口的应用实例。 本次后端提供的真实登录API根地址: ```text http://localhost:8092/training/api/v1 ``` 原静态练习页尚未适配真实登录;先按权限接口说明完成登录,再携带访问令牌调用业务接口。 ## Maven 测试和打包 在项目根目录执行: ```powershell mvn test mvn package java -jar target/ecp-app-component-example-1.0.0-exec.jar ``` 默认使用 `mybatis` profile。需要切换 JDBC 实现时可启动: ```powershell java -jar target/ecp-app-component-example-1.0.0-exec.jar --spring.profiles.active=jdbc ``` ## 项目目录 ```text src/main/java/.../componentexample/ ComponentExampleApplication.java 启动入口 application/ 业务服务接口与实现 iam/ 本地认证、用户/角色/菜单、会话和审计 domain/catalog/ 业务对象及 Repository 接口 infra/persistence/ MyBatis/JDBC 数据库访问实现 web/ 接口、请求和响应对象、异常处理 src/main/resources/ application.yml 应用配置 db/migration/ Flyway 数据库迁移 mapper/ MyBatis XML SQL static/ HTML、CSS、JavaScript 和 jQuery src/test/java/ 业务自动化测试 docs/ 学习教程 .run/ IDEA 共享运行配置 ``` 备注字段的逐文件实现说明见 [IDEA 排错与新增备注字段](docs/IDEA排错与新增备注字段.md)。其中部分路径是原开发电脑的示例,需要按本机环境调整。 移企付已实现员工新增与分页查询,调用示例、查询规则和测试方式见[移企付新增员工与分页接口](docs/移企付新增员工与分页接口.md)。 按主键ID删除冻结员工的POST接口见[移企付删除员工接口](docs/移企付删除员工接口.md),采用逻辑删除并保留额度账户和流水。 ## 备注字段验收 1. 新增记录,输入备注并保存。 2. 刷新页面,确认备注仍然显示。 3. 编辑记录,确认备注回填且可修改。 4. 清空备注后保存,列表显示“—”。 5. 备注支持换行,最多 255 个字符。 可在 Navicat 查询真实保存值: ```sql SELECT item_code, item_name, remark FROM demo.catalog_item WHERE tenant_id = 'training-tenant'; ``` ## 当前已知问题 查询不存在的记录 ID 时,当前 ECP 调用链可能返回通用 `500 / INVOCATION_FAILED`;该错误响应还需要后续修正。