From 36034d492501f7994f691e46263b7f8ca56b4a0a Mon Sep 17 00:00:00 2001 From: Silliter Date: Wed, 3 Apr 2019 16:31:55 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../estsh/i3plus/pojo/base/bean/DdlPackBean.java | 43 +++++++++++++++++++--- .../pojo/base/jpa/daoimpl/BaseRepositoryImpl.java | 3 +- 2 files changed, 38 insertions(+), 8 deletions(-) diff --git a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/bean/DdlPackBean.java b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/bean/DdlPackBean.java index 05c06fd..94ed7aa 100644 --- a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/bean/DdlPackBean.java +++ b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/bean/DdlPackBean.java @@ -27,11 +27,14 @@ public class DdlPackBean { //是否是hql private boolean isHql; - //排序内容 - private String orderByStr; + //手动hql,尽量避免直接传参,使用?代替 + private String hqlAppend; //where后跟着的hql/sql - private String whereAppend; + private StringBuilder whereAppend; + + //排序内容 + private String orderByStr; //需要拼接的hql private StringBuilder sb = null; @@ -39,11 +42,13 @@ public class DdlPackBean { public DdlPackBean(){ this.isHql = true; sb = new StringBuilder(); + whereAppend = new StringBuilder(); } public DdlPackBean(boolean isHql){ this.isHql = isHql; sb = new StringBuilder(); + whereAppend = new StringBuilder(); } public boolean isHql() { @@ -62,12 +67,20 @@ public class DdlPackBean { this.orderByStr = orderByStr; } + public String getHqlAppend() { + return hqlAppend; + } + + public void setHqlAppend(String hqlAppend) { + this.hqlAppend = hqlAppend; + } + public String getWhereAppend() { - return whereAppend; + return whereAppend.toString(); } public void setWhereAppend(String whereAppend) { - this.whereAppend = whereAppend; + this.whereAppend = new StringBuilder(whereAppend); } public HashMap getHqlPreparedMap() { @@ -87,7 +100,7 @@ public class DdlPackBean { hqlPreparedMap.put(column, val); } - sb.append(hql); + whereAppend.append(hql); } /** @@ -99,6 +112,24 @@ public class DdlPackBean { } /** + * 获取包含hql的最终的ddl + * @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 * @return */ diff --git a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/jpa/daoimpl/BaseRepositoryImpl.java b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/jpa/daoimpl/BaseRepositoryImpl.java index 1663288..9278d72 100644 --- a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/jpa/daoimpl/BaseRepositoryImpl.java +++ b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/jpa/daoimpl/BaseRepositoryImpl.java @@ -894,8 +894,7 @@ public class BaseRepositoryImpl extends SimpleJpaRep @Override public double findByHqlDouble(DdlPackBean packBean) { try{ - Query query = entityManager.createQuery("from " + persistentClass.getSimpleName() - + " as model where 1=1 " + packBean.getPackedHql(),Double.class); + Query query = entityManager.createQuery(packBean.getPackedHqlAll(),Double.class); for (String key : packBean.getHqlPreparedMap().keySet()) { query.setParameter("m_" + key,packBean.getHqlPreparedMap().get(key));