diff --git a/llms-full.txt b/llms-full.txt index 9e48fd9..d443b70 100644 --- a/llms-full.txt +++ b/llms-full.txt @@ -651,6 +651,16 @@ DateTime endTime; //会议结束时间 - **定义与用途:** 在TOCO中,针对DTO和VO,读方案描述了如何基于查询对象从数据库获取DTO和VO列表数据,主要提供了两个能力 - 根据查询条件,返回符合条件的DTO或VO的id列表 - 根据字段过滤条件,对DTO和VO的列表字段数据进行过滤 +- 读方案能力边界 + - 读方案的的查询能力是sql的简化,实现了部分sql的查询能力,仅支持Sql的 count、exists、left join, not、in、like、between、and、or、not 以及 ( ) , 以及排序 order by, 以及分页 limit ,offset, 不能使用group by, having , avg 等函数 + - 在使用exists 和 left join的时候只能通过外键扩展,其中如果外键是1:N的时候,只能使用exist, 如果是1:1的时候则可以使用 left join 和 exists. + 例如: 实体t 和他t1 ,t1存在列t_id为指向t的外键,如果外键关系为1:N,则 select * from t where exists (select * from t1 where t.id=t1.id) 合法; elect * from t left join t1 on t.id=t1.id 非法 + - 在过滤字段的选择上,在使用exists的时候,在条件中只能选择后表的字段, 在使用 left join的时候,则可以使用前表和后表字段 + 例如: 实体 t (id,name) ,实体 t1 (id,name,t_id) ,t1存在列t_id为指向t的外键, select * from t where exists (select * from t1 where t.id=t1.id and t.name like ?) 非法, select * from t left join t1 on t.id=t1.id and t1.name like ? 合法 + select * from t left join t1 on t.id=t1.id where t.name like ? 合法, select * from t left join t1 on t.id=t1.id where t1.name like ? 合法 + - count语法的限制,count语法只能在最外层单独使用,如果使用了count语法,只能返回总的数量,不能返回其他字段 + 例如:select count(*) from t 合法, select count(*),t.name from t where t.name like ? 非法 + - 如果需求在读方案的能力之外,可以使用 **2.16 自定义查询** 实现功能 - **特别注意** 对于根据主键,获取单个或者批量获取DTO或者VO,并且不需要对DTO、VO的列表字段数据进行过滤的需求,必须使用**DTO自动生成的预定义方法**,禁止使用读方案 - **关键配置:** 名称(小写字母+下划线,不要以read_plan结尾,全局唯一)、返回结构(DTO/VO,一个读方案**不能**同时返回多种DTO或VO)、查询条件的自然语言描述、是否生成计数方法、排序字段(如果选择不分页,则不需要)、过滤字段以及过滤条件。 - **与RPC、代码的关系:** 对于每一个返回DTO的读方案,TOCO会为每种分页方式自动生成一个RPC方法,其参数为对应的QTO,返回值为DTO列表;如果选择了生成计数方法,则还会在生成一个RPC,参数为QTO,返回值为符合条件的DTO数量。同样,对于每一个返回VO的读方案,TOCO会自动生成一个Java方法,其参数为对应的QTO,返回值为VO列表,方法内部逻辑已经由TOCO完全实现;如果选择了生成计数方法,则还会生成一个count方法,参数为QTO,返回值为符合条件的DTO数量,方法内部逻辑已经由TOCO完全实现 @@ -1324,7 +1334,10 @@ requestParams为请求参数列表,response为返回结构,requestParams中 - **例子:** - 用户登录,在UserFlowService中生成一个函数invokeLoginFlow,该函数通过流程框架根据流程定义调用LoginNode,LoginNode中封装了用户登录的逻辑,LoginFlowContext中封装了用户登录的参数和结果。 - **修改建议:** 不修改 service 中的函数, 不修改FlowConfig, 可以修改FlowContext, 添加/修改出入参数, 修改FlowNode中的具体业务逻辑。 - +#### **2.16 自定义查询** + - 在读方案无法满足需求的情况下,可以使用自定义查询 + - 自定义查询使用MyBatis、MyBatisPlus实现 + - 各层的代码位置严格遵守章节:**3.2 项目结构与导航**,必须有mapper层、service层、必须有DO对象、必须有DTO对象,如果是API返回数据,必须有VO对象 ### **3 生成代码产物补充说明** - **3.1 支持的语言/框架** Java、SpringBoot、MyBatis-plus(读)、Hibernate(写)