查询优化

yun-zuoyi
Silliter 6 years ago
parent a7370f4cc0
commit 36034d4925

@ -27,11 +27,14 @@ public class DdlPackBean {
//是否是hql //是否是hql
private boolean isHql; private boolean isHql;
//排序内容 //手动hql尽量避免直接传参使用代替
private String orderByStr; private String hqlAppend;
//where后跟着的hql/sql //where后跟着的hql/sql
private String whereAppend; private StringBuilder whereAppend;
//排序内容
private String orderByStr;
//需要拼接的hql //需要拼接的hql
private StringBuilder sb = null; private StringBuilder sb = null;
@ -39,11 +42,13 @@ public class DdlPackBean {
public DdlPackBean(){ public DdlPackBean(){
this.isHql = true; this.isHql = true;
sb = new StringBuilder(); sb = new StringBuilder();
whereAppend = new StringBuilder();
} }
public DdlPackBean(boolean isHql){ public DdlPackBean(boolean isHql){
this.isHql = isHql; this.isHql = isHql;
sb = new StringBuilder(); sb = new StringBuilder();
whereAppend = new StringBuilder();
} }
public boolean isHql() { public boolean isHql() {
@ -62,12 +67,20 @@ public class DdlPackBean {
this.orderByStr = orderByStr; this.orderByStr = orderByStr;
} }
public String getHqlAppend() {
return hqlAppend;
}
public void setHqlAppend(String hqlAppend) {
this.hqlAppend = hqlAppend;
}
public String getWhereAppend() { public String getWhereAppend() {
return whereAppend; return whereAppend.toString();
} }
public void setWhereAppend(String whereAppend) { public void setWhereAppend(String whereAppend) {
this.whereAppend = whereAppend; this.whereAppend = new StringBuilder(whereAppend);
} }
public HashMap<String, Object> getHqlPreparedMap() { public HashMap<String, Object> getHqlPreparedMap() {
@ -87,7 +100,7 @@ public class DdlPackBean {
hqlPreparedMap.put(column, val); hqlPreparedMap.put(column, val);
} }
sb.append(hql); whereAppend.append(hql);
} }
/** /**
@ -99,6 +112,24 @@ public class DdlPackBean {
} }
/** /**
* hqlddl
* @return
*/
public String getPackedHqlAll(){
if(hqlAppend != null){
sb.append(hqlAppend);
}
if(whereAppend != null){
sb.append(whereAppend);
}
if(orderByStr != null){
sb.append(orderByStr);
}
System.out.println("===" + sb.toString());
return sb.toString();
}
/**
* ddl * ddl
* @return * @return
*/ */

@ -894,8 +894,7 @@ public class BaseRepositoryImpl<T, ID extends Serializable> extends SimpleJpaRep
@Override @Override
public double findByHqlDouble(DdlPackBean packBean) { public double findByHqlDouble(DdlPackBean packBean) {
try{ try{
Query query = entityManager.createQuery("from " + persistentClass.getSimpleName() Query query = entityManager.createQuery(packBean.getPackedHqlAll(),Double.class);
+ " as model where 1=1 " + packBean.getPackedHql(),Double.class);
for (String key : packBean.getHqlPreparedMap().keySet()) { for (String key : packBean.getHqlPreparedMap().keySet()) {
query.setParameter("m_" + key,packBean.getHqlPreparedMap().get(key)); query.setParameter("m_" + key,packBean.getHqlPreparedMap().get(key));

Loading…
Cancel
Save