更新 llms-full.txt
This commit is contained in:
@@ -245,7 +245,7 @@ DateTime endTime; //会议结束时间
|
||||
|
||||
- **预定义方法:** 对于每一个DTO,TOCO会自动其根Entity的唯一索引生成一些预定义的RPC方法及实现,预定义方法不仅获取了根Entity的数据,还通过RPC调用的方式**自动**获取了**所有扩展字段**的数据,并对数据进行了拼装处理。如实体user有unique index(username),则会针对UserDto生成UserDto UserDtoService.getByUserName(String userName)和List<UserDto> UserDtoService.getByUserNames(List<String> userNames)。预定义方法内部根据外键关系自动生成了复杂DTO数据的递归、Join拼装的能力,会直接返回DTO内部的所有继承字段和扩展字段的数据。注意自定义字段的数据获取不会自动生成,需要在对应的convert方法中编写代码。
|
||||
- **公开性:** DTO可以设置公开性,如果DTO为公开,则其生成的预定义RPC方法也为公开RPC,可以被其他模块订阅并调用;如果DTO为非公开,则其生成的预定义RPC方法也为非公开RPC,其他模块不可见
|
||||
- **跨模块依赖:** 如果DTO内引用了其他模块的DTO,则需要订阅其他模块的RPC(getByIds,getBy${foreignKey}等)方法,用来获取对应的DTO
|
||||
- **跨模块依赖:** 如果DTO内引用了其他模块的DTO,则需要订阅其他模块的RPC(getBy${PrimaryKey},getBy${PrimaryKey}s,getBy${foreignKey}等)方法,用来获取对应的DTO
|
||||
- **复杂嵌套DTO获取流程:** 如果我们需要获取DTO,通常有2种方式,且两种方式都可以直接获取到复杂嵌套的DTO数据:
|
||||
- 第1种: 通过预定义方法获取DTO
|
||||
- 第2种: 通过读方案获取DTO
|
||||
@@ -277,7 +277,7 @@ DateTime endTime; //会议结束时间
|
||||
* 实现类Converter 其对应的唯一标志在类注解@AutoGenerated中指定,uuid规则: ${DTO在TOCO中的uuid}|DTO|CONVERTER
|
||||
* 基类BaseConverter 其对应的唯一标志在类注解@AutoGenerated中指定,uuid规则: ${DTO在TOCO中的uuid}|DTO|BASE_CONVERTER
|
||||
- **例子:**
|
||||
* 如UserDto、UserDtoManager、UserDtoConverter extends UserDtoBaseConverter、UserDtoService或(名称为${DtoName}Service,内部包含getById,getByIds等方法)。如果Dto为UserBaseDto,则生成的类名为UserBaseDtoService
|
||||
* 如UserDto、UserDtoManager、UserDtoConverter extends UserDtoBaseConverter、UserDtoService或(名称为${DtoName}Service,内部包含getBy${PrimaryKey},getBy${PrimaryKey}s等方法)。如果Dto为UserBaseDto,则生成的类名为UserBaseDtoService
|
||||
- **修改建议:**
|
||||
- 建议在Service与BaseConverter中进行代码扩展,不建议修改结构定义文件和Manager文件。其中DTO的**自定义字段**由于不直接派生自Entity,所以一般会对应取数逻辑代码。通常如果涉及到数据获取、计算和拼装,批量处理的性能最好,所以代码位置**必须**放在BaseConverter中已经自动生成的**列表**转换方法中,批量取数组装,如UserBaseDtoBaseConverter.convertUserToUserBaseDto(List<User>)或UserDtoBaseConverter.convertUserBaseDtoToUserDto(List<UserBaseDto>)
|
||||
|
||||
@@ -474,7 +474,7 @@ DateTime endTime; //会议结束时间
|
||||
- **派生源默认使用BaseDTO:** 除非用户指定了VO的派生源DTO,否则创建VO时只可以用**BaseDTO**为派生源。
|
||||
- **与DTO的转换关系:** 在创建一个**有派生源的**VO后,TOCO会在生成代码时自动生成2种convert方法:1.基础convert方法,从DTO转换为VO,仅转换结构以及基本类型字段的get/set,方法命名为convertTo${VoName}、convertTo${VoName}List、convertTo${VoName}Map,其中**Map转换方法**为底层批量方法,通常也是自定义字段逻辑编写的位置(复用性好,会被其他convert方法调用),单个和列表convert方法都通过**调用Map方法**来实现;2.带数据拼装逻辑的convert方法,内部会**自动**调用基础convert方法从DTO转换为VO并设置基本类型字段数据,然后再根据外键**自动**获取**扩展字段**的数据以拼装最终数据,方法命名为convertAndAssembleData、convertAndAssembleDataList,也就是说这两个方法已经**自动**获取了所有**继承字段**和**扩展字段**的数据)。这2种方法对应的代码会生成在VO对应的Converter类中
|
||||
- **字段数据获取:** 对于继承自DTO的字段、以及扩展字段,TOCO会在convert方法中自动生成数据的获取代码,无需手动实现这两种字段的获取和拼装逻辑。对于自定义字段,则**必须**在最底层的convertTo${VoName}Map方法中实现对应的获取和拼装逻辑,以便于其他convert方法都能够**复用**这段逻辑。**禁止**在其他convert方法中实现自定义字段逻辑,因为这样会导致某些场景下数据拼装不完整。
|
||||
- **跨模块依赖:** 如果VO内存在由其他模块DTO派生出的子VO,则需要订阅其他模块的RPC(getByIds,getBy${ForeignKey}s等)方法,用来获取对应的DTO,然后再转换为子VO
|
||||
- **跨模块依赖:** 如果VO内存在由其他模块DTO派生出的子VO,则需要订阅其他模块的RPC(getBy${PrimaryKey},getBy${PrimaryKey}s,getBy${ForeignKey}s等)方法,用来获取对应的DTO,然后再转换为子VO
|
||||
- **复杂嵌套VO获取流程:** 如果我们需要获取VO,通常有3种方式,且3种方式都可以直接获取到复杂嵌套的VO数据:
|
||||
- 第1种: 先通过预定义方法获取VO的派生源BaseDTO,再通过convertAndAssembleData或convertAndAssembleDataList方法转换成VO
|
||||
- 第2种: 先通过读方案获取VO的派生源BaseDTO,再通过convertAndAssembleData或convertAndAssembleDataList方法转换成VO
|
||||
@@ -1088,7 +1088,7 @@ DateTime endTime; //会议结束时间
|
||||
结构中一些关键字段描述如下:
|
||||
requestParams为请求参数列表,response为返回结构,requestParams中每个参数和response的结构相同,其中:name为参数名;type为参数类型,参数类型取值范围为Boolean,String,Integer,Long,Float,Double,BigDecimal,Date,ByteArray,Enum,Eo,List,Dto,Qto,Bto,Void,其中参数不能为Void,如果不需要返回值,则type设置为Void;description为描述;typeUuid为参数对应类结构的UUID,当type为Enum、Eo、Dto、Qto、Bto时包含该字段;innerType为List内部类型,当type为List时包含该字段;innerUuid为List内部类结构的UUID,当type为List且innerType为Enum、Eo、Dto、Qto、Bto时包含该字段。
|
||||
- **代码产物和修改建议**
|
||||
- **生成代码:** RPC会在service层中生成类文件及实现函数,包含DTO自动生成的RPC如UserDtoService.getById或UserBaseDtoService.getById、读写方案自动生成的RPC如UserDtoQueryService.queryByListQto、UserBOService.createUser、自定义RPC如UserCustomService.customMethod。特别注意公开的RPC才可被其他模块使用,RPC被订阅后会生成RpcAdapter适配器,其他模块通过RpcAdapter才可调用该方法。如Order模块订阅了User模块的UserDtoService.getById,则会在Order模块中生成UserDtoServiceInOrderRpcAdapter.getById方法,Order模块中的代码必须通过@Resource private UserDtoServiceInOrderRpcAdapter userDtoServiceInOrderRpcAdapter;注入适配器后才可进行方法调用
|
||||
- **生成代码:** RPC会在service层中生成类文件及实现函数,包含DTO自动生成的RPC如UserDtoService.getById(主键为id)或StaffBaseDtoService.getByStaffId(主键为staff_id)、读写方案自动生成的RPC如UserDtoQueryService.queryByListQto、UserBOService.createUser、自定义RPC如UserCustomService.customMethod。特别注意公开的RPC才可被其他模块使用,RPC被订阅后会生成RpcAdapter适配器,其他模块通过RpcAdapter才可调用该方法。如Order模块订阅了User模块的UserDtoService.getById,则会在Order模块中生成UserDtoServiceInOrderRpcAdapter.getById方法,Order模块中的代码必须通过@Resource private UserDtoServiceInOrderRpcAdapter userDtoServiceInOrderRpcAdapter;注入适配器后才可进行方法调用。这里要注意,
|
||||
- **修改建议:** 建议修改RPC方法,不建议修改RPC方法签名、适配器中的内容
|
||||
#### **2.14 应用程序接口 (API)**
|
||||
- **定义与用途:** 在TOCO中,API用于定义对外暴露的HTTP接口
|
||||
|
||||
Reference in New Issue
Block a user