Test 接口
源码:src/business/controller/test/index.ts
前缀:/api/test
实体表:test
用途:演示 BaseMapper CRUD 与自定义 @Select。
WARNING
部分写操作使用了 GET(如 create / delete),仅适合本地演示,正式接口请改用 POST / DELETE。
接口列表
| 方法 | 路径 | 鉴权 | 说明 |
|---|---|---|---|
| GET | /api/test/test | 忽略 | selectList |
| GET | /api/test/create?name= | 忽略 | insert |
| GET | /api/test/by-name?name= | 忽略 | 自定义 findByName |
| GET | /api/test/find/:id | 忽略 | 自定义 findById |
| GET | /api/test/delete/:id | 忽略 | deleteById |
自定义 SQL 示例
TestMapper 中:
ts
@Select(
'SELECT * FROM ${table} WHERE name = #{name} AND delete_flag = #{flag}'
)
findByName(
@Param('table') _table: string,
@Param('name') _name: string,
@Param('flag') _flag: number
): Promise<Record<string, unknown>[]> {
return undefined as never
}
@Select('SELECT * FROM test WHERE id = #{id} AND delete_flag = 0')
findById(
@Param('id') _id: string | number
): Promise<Record<string, unknown>[]> {
return undefined as never
}#{}:预编译绑定${}:字符串替换(此处传入表名,仅可信场景使用)- 方法体可为占位;实际由装饰器在运行时执行 SQL
@Service(TestMapper)后,Controller 可通过this.testService.findByName(...)调用
分层文件
| 文件 | 作用 |
|---|---|
business/entity/test.ts | 实体 |
business/mapper/test.ts | Mapper + @Select |
business/service/test.ts | Service |
business/controller/test/index.ts | HTTP 入口 |