Wizzercn / NutzWk

WK系列开发框架-V1至V5 Java开源企业级开发框架(单应用/微服务/分布式)
https://budwk.com
Apache License 2.0
1.62k stars 637 forks source link

建议baseservice中增加一个多关联查询接口 #99

Closed cranehe closed 6 years ago

cranehe commented 6 years ago

在实际项目中会有这样的一种情况,一个实体对应的关联对象有多个,这时候在使用内置的baseservice的时候发现没有能满足的,遂想是不是可以实现一个这样的方法:

public NutMap data(int length, int start, int draw, List<DataTableOrder> orders, List<DataTableColumn> columns, Cnd cnd, Map<String,Cnd> links) {
        NutMap re = new NutMap();
        if (orders != null && orders.size() > 0) {
            for (DataTableOrder order : orders) {
                DataTableColumn col = columns.get(order.getColumn());
                cnd.orderBy(Sqls.escapeSqlFieldValue(col.getData()).toString(), order.getDir());
            }
        }
        Pager pager = new OffsetPager(start, length);
        re.put("recordsFiltered", this.dao().count(this.getEntityClass(), cnd));
        List<?> list = this.dao().query(this.getEntityClass(), cnd, pager);
        if (null != links) {
            for (String linkName: links.keySet()){
                Cnd subCnd = links.get(linkName);
                if (subCnd != null){
                    this.dao().fetchLinks(list, linkName, subCnd);
                }else {
                    this.dao().fetchLinks(list, linkName);
                }
            }
        }
        re.put("data", list);
        re.put("draw", draw);
        re.put("recordsTotal", length);
        return re;
    }

最后一个参数用一个map来传递多个link查询,不知道是不是合理?

Wizzercn commented 6 years ago

原来有个方法,最后面一个是支持正则表达式的:

.data(length, start, draw, order, columns, cnd, "^(tags|goodsClass|goodsType)$");

cranehe commented 6 years ago

意思是之前支持过是吗?但是正则这个也不能定义关联查询用到的cnd条件的吧?