自定义CRUD
在真实业务场景场景下,业务需求往往比通用CRUD更为复杂,低码设计平台提供通用的CRUD方法无法模拟覆盖到具体的业务场景,因此,我们提供了自定义CRUD能力以支持更复杂的需求。
提示
阅读本章节需要一定的后端开发经验。
初始CRUD
在数据模型创建时,我们会自动生成该数据模型的CRUD方法,可以理解其为后端的 mapper 层方法,其中包括:
create
:创建方法,数据模型字段属性中"创建"按钮打开的字段将会作为创建方法的入参列delete
:删除方法,数据模型字段属性中"删除"按钮打开的字段将会作为删除方法的入参列modify
:修改方法,数据模型字段属性中"编辑"按钮打开的字段将会作为修改方法的入参列queryList
:查询所有数据方法,数据模型字段属性中"条件"按钮打开的字段将会作为查询所有数据方法的入参列,"查询"按钮打开的字段将会作为查询所有数据方法的出参列queryPage
:查询分页数据方法,数据模型字段属性中"条件"按钮打开的字段将会作为查询分页数据方法的入参列,"查询"按钮打开的字段将会作为查询分页数据方法的出参列queryDetail
:查询详情方法,数据模型字段属性中"主键"按钮打开的字段将会作为查询详情方法的入参列,"编辑"按钮打开的字段将会作为查询详情方法的出参列
上述初始方法为自动生成,无法编辑与删除,数据模型驱动页面便是使用上述方法完成CRUD交互逻辑
自定义CRUD
在前章节案例的最后,我们希望在表格展示时,客户经理
列展示关联客户经理的名字,仅使用上述的初始方法显然不满足需求,常规做法是后端的接口中直接关联查询出客户经理名字交给前端渲染,因此,此处我们需求自定义一个 CRUD 逻辑。
选中数据模型 t_cust,在右侧菜单中点击"添加模型方法"创建一个模型方法
queryPageDetail
双击添加的模型方法,修改以下属性:
方法类型
:查询返回类型
:分页
并在下方文本域中录入以下
mybatis
语法语句:sqlselect tc."id", tc."custName", tc."custCode", tc."custManager", tc."properties", tc."custSource", tc."induRankStatus", tc."induRankRemark", tm."name" as "managerName" from "t_cust" tc left join "t_manager" tm on tc."custManager" = tm."id" <if test="custName != null and custName != ''"> <bind name="custNameLike" value="'%' + custName + '%'"/> where tc."custName" like #{custNameLike,jdbcType=VARCHAR} </if>
select tc."id", tc."custName", tc."custCode", tc."custManager", tc."properties", tc."custSource", tc."induRankStatus", tc."induRankRemark", tm."name" as "managerName" from "t_cust" tc left join "t_manager" tm on tc."custManager" = tm."id" <if test="custName != null and custName != ''"> <bind name="custNameLike" value="'%' + custName + '%'"/> where tc."custName" like #{custNameLike,jdbcType=VARCHAR} </if>
上述语句将 t_manager 和 t_cust 表进行了关联查询,并把 t_cust 表中的 name 字段查询出来并命名为 managerName
后续我们会更改接口逻辑,使分页查询接口调用我们新增的模型方法,并将 managerName 暴露给前端页面进行渲染
新增的模型方法支持在线调试功能,以验证 SQL 语句是否正确:
点击"SQL 在线调试"按钮,在弹出窗口中录入方法参数(如有),SQL 中需要的参数以 JSON 格式提供:
json// 示例中的参数 {"custName":"a"}
// 示例中的参数 {"custName":"a"}
点击刷新 SQL 预览,然后点击"执行",执行结果为成功则表示语法没有问题。