我想做个报表,值来自多个数据表,
例如:
select
A.id,
B.name,
from A
left join B on A.id = B.id
有分页的,看了有个“linkname”,但是不知道怎么用,文档也没怎么看明白,能解释下吗?
10 回复
select
A.id as a_id,
B.name as b_name,
from A
left join B on A.id = B.id
然后自定义sql的callback选record或entity都可以
意思是使用自定义sql,原本的:
/**
* DataTable Page
*
* @param length 页大小
* @param start start
* @param draw draw
* @param orders 排序
* @param columns 字段
* @param cnd 查询条件
* @param linkname 关联查询
* @return
*/
public NutMap data(int length, int start, int draw, List<DataTableOrder> orders, List<DataTableColumn> columns, Cnd cnd, String linkname) {
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(getEntityClass(), cnd));
List<?> list = this.dao().query(getEntityClass(), cnd, pager);
if (!Strings.isBlank(linkname)) {
this.dao().fetchLinks(list, linkname);
}
re.put("data", list);
re.put("draw", draw);
re.put("recordsTotal", length);
return re;
}
不可以是吗?
就是有一个学生表,还有一个课程表,我要把学生和课程名字在一张报表中展示,
使用的是XXX.data(length, start, draw, order, columns, cnd, null);
这只能查一张表上的内容啊....
@1037424761
如果写了一对多、多对多关系,比如:
@ManyMany(from = "classId", relation = "cms_class_link", to = "linkId")
private List<Cms_link> links;
那么linkname可以传 links,结果会拼在一起,而不需要自定义SQL
@wendal 你的回答不太准确哦~~~
@Wizzercn 哦哦
添加回复
请先登陆