Java JOOQ selectQuery for Record5
我是新来的JOOQ 我需要使用SelectQuery和returnresult,但它的返回类型是Record。是否可以将selectQuery与Record5一起使用?还是有其他解决办法Java JOOQ selectQuery for Record5,java,sql,jooq,Java,Sql,Jooq,我是新来的JOOQ 我需要使用SelectQuery和returnresult,但它的返回类型是Record。是否可以将selectQuery与Record5一起使用?还是有其他解决办法 SelectQuery<Record> query = db.selectQuery(); query.addSelect(WARE.NAME, RECEIPTITEM.SALEPRICE, RECEIPTITEM.QUANTITY, RECEIPT.TSCCREATED, WARE
SelectQuery<Record> query = db.selectQuery();
query.addSelect(WARE.NAME, RECEIPTITEM.SALEPRICE, RECEIPTITEM.QUANTITY, RECEIPT.TSCCREATED, WARE.WARECATEGORYID);
query.addFrom(RECEIPT
.join(RECEIPTITEM).on(RECEIPT.ID.eq(RECEIPTITEM.RECEIPTID))
.join(OUTLET).on(OUTLET.ID.eq(RECEIPT.OUTLETID))
.join(WARE).on(WARE.ID.eq(RECEIPTITEM.WAREID)));
query.addConditions(RECEIPT.TSCCREATED.between(start, end)
.and(OUTLET.OWNERID.eq(ownerId)));
if (outletId != null) {
query.addConditions(RECEIPT.OUTLETID.eq(outletId));
}
if (merchantId != null) {
query.addConditions(RECEIPT.MERCHID.eq(merchantId));
}
SelectQuery=db.SelectQuery();
query.addSelect(WARE.NAME、RECEIPTITEM.SALEPRICE、RECEIPTITEM.QUANTITY、RECEIPT.tscreated、WARE.WARECATEGORYID);
query.addFrom(收据)
.join(RECEIPTITEM).on(RECEIPT.ID.eq(RECEIPTITEM.RECEIPTID))
.join(OUTLET).on(OUTLET.ID.eq(RECEIPT.OUTLETID))
.join(WARE).on(WARE.ID.eq(RECEIPTITEM.WAREID));
query.addConditions(RECEIPT.tscreated.between)(开始、结束)
。及(OUTLET.OWNERID.eq(OWNERID));
如果(outletId!=null){
query.addConditions(RECEIPT.OUTLETID.eq(OUTLETID));
}
if(merchantId!=null){
query.addConditions(RECEIPT.MERCHID.eq(merchantId));
}
您不能使用jOOQ创建SelectQuery
类型
原因是SelectQuery
()允许您通过(您自己完成的)不断向其中添加新列。每次这样的调用都会使Record5
类型无效
但是,如果动态部分只是附加条件,则不必使用模型API来构造动态SQL。您可以按如下方式重写查询:
Condition condition = RECEIPT.TSCCREATED.between(start, end)
.and(OUTLET.OWNERID.eq(ownerId));
if (outletId != null) {
condition = condition.and(RECEIPT.OUTLETID.eq(outletId));
}
if (merchantId != null) {
condition = condition.and(RECEIPT.MERCHID.eq(merchantId));
}
Select<Record5<String, BigDecimal, Integer, Timestamp, Long>> select =
db.select(
WARE.NAME,
RECEIPTITEM.SALEPRICE,
RECEIPTITEM.QUANTITY,
RECEIPT.TSCCREATED,
WARE.WARECATEGORYID)
.from(RECEIPT
.join(RECEIPTITEM).on(RECEIPT.ID.eq(RECEIPTITEM.RECEIPTID))
.join(OUTLET).on(OUTLET.ID.eq(RECEIPT.OUTLETID))
.join(WARE).on(WARE.ID.eq(RECEIPTITEM.WAREID)))
.where(condition);
Condition=RECEIPT.tscreated.between(开始、结束)
.和(OUTLET.OWNERID.eq(OWNERID));
如果(outletId!=null){
条件=条件和(接收.输出ID.等式(输出ID));
}
if(merchantId!=null){
条件=条件和(收货条件);
}
选择=
db.select(
WARE.NAME,
RECEIPTITEM.SALEPRICE,
RECEIPTITEM.QUANTITY,
已创建receive.tsc,
WARE.WARECATEGORYID)
.从(收据)
.join(RECEIPTITEM).on(RECEIPT.ID.eq(RECEIPTITEM.RECEIPTID))
.join(OUTLET).on(OUTLET.ID.eq(RECEIPT.OUTLETID))
.join(WARE).on(WARE.ID.eq(RECEIPTITEM.WAREID)))
.在何处(条件);