0
私はエクスポートするレポートがたくさんあり、データには春データjpaが照会されていますが、コーディングすると面倒です。 いくつかのコード:クエリが複雑な場合にspringデータjpaをエスケープする方法は?
public Object getReportBySupplier(ReportSupplierSearch reportSearch) {
// 查询统计数据
StringBuffer sql = new StringBuffer("SELECT ifnull(sum(apply_money), 0) money_count, count(1) itemCount FROM cash WHERE confirm_status = 2 ");
sql.append("and supplier_id = " + reportSearch.getSupplierId());
String start = null;
String end = null;
if (!StringUtils.isEmpty(reportSearch.getStime())) {
start = reportSearch.getStime() + " 00:00:00";
sql.append(" and paying_time >= " + "'" + start + "'");
}
if (!StringUtils.isEmpty(reportSearch.getEtime())) {
end = reportSearch.getEtime() + " 23:59:59";
sql.append(" and paying_time <= " + "'" + end + "'");
}
sql.append(" UNION ALL");
sql.append(" SELECT ifnull((sum(t1.pay_money)), 0) money_count, count(1) itemCount FROM pay_info t1 ");
sql.append(" where t1.supplier_id =" + reportSearch.getSupplierId());
if (!StringUtils.isEmpty(reportSearch.getStime())) {
sql.append(" and pay_time >= " + "'" + start + "'");
}
if (!StringUtils.isEmpty(reportSearch.getEtime())) {
sql.append(" and pay_time <= " + "'" + end + "'");
}
Query query = em.createNativeQuery(sql.toString());
List result = query.getResultList();
return assembleReportBean(result);
}
ですが、クエリは常に動的です。 –
上記の方法を使用すると、クエリを動的にすることができます。サブクエリクエリ(動的結果)の結果をメインクエリに使用するには、Naming Parameterクエリを使用します。 もしこのメソッドがあなたのニーズを満たしていなければ、上記のような独自のメソッドとその実装を提供することができます。 –