多表关联查询
首先Java代码中不建议使用多表查询。正常情况下应该由数据库负责人来提供相关的视图或存储过程。
常用格式如下,其中查询条件与其他查询格式一致
set = service.querys(TableBuilder.init().setTable("CRM_TENANT AS M") .left("CRM_USER AS U","M.USER_ID = U.ID") .build()); set = service.querys(TableBuilder.init("SD_ORDER AS M") .left("CRM_USER AS U","M.USER_ID = U.ID") .left("CRM_TENANT AS T","M.TENANT_ID = T.ID") .build()); set = service.querys(TableBuilder.init("SD_ORDER(M.ID,U.NM,T.NM AS TENANT_NM) AS M") .left("CRM_USER AS U","M.USER_ID = U.ID") .left("CRM_TENANT AS T","M.TENANT_ID = T.ID") .build() ,condition(true,"M.ID:od","TENANT_ID:tt")); service.querys(TableBuilder.init() .setTable("HR_USR(U.ID AS USER_ID,D.ID AS DEPT_ID)").setAlias("U") .left("HR_DEPT D","U.DEPT_ID = D.ID").build() , condition(true,"A.NM:%nm%")); //如果查的列比较多可以通过ConfigStore来设置 ConfigStore configs = new DefaultConfigStore(); configs.columns("M.ID","F.CODE AS DEPARTMENT_CODE"); service.query(TableBuilder.init("HR_EMPLOYEE AS M").left("HR_DEPARTMENT AS F", "F.DEPARTMENT_ID = F.ID").build(), configs); /* SELECT M.ID,F.CODE AS DEPARTMENT_CODE FROM HR_EMPLOYEE M LEFT JOIN HR_DEPARTMENT F ON F.DEPARTMENT_ID = F.ID */ //没有什么是原生SQL解决不了的,也可以这样 service.querys("SELECT A.*,B.CODE FROM A LEFT JOIN B ON A.BID = B.ID", condition(true,"A.NM:%nm%"));