From 8e8e19126248a4cfdfccd4de4014d07de3ff929e Mon Sep 17 00:00:00 2001 From: administrator Date: Tue, 26 Dec 2023 14:16:44 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E8=AE=B0=E5=BD=95=E4=B8=AD?= =?UTF-8?q?=E7=9A=84=E7=89=B9=E5=AE=9A=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../estsh/i3plus/pojo/base/bean/DdlPackBean.java | 43 ++++++++++++++ .../i3plus/pojo/base/jpa/dao/BaseRepository.java | 19 +++++++ .../pojo/base/jpa/daoimpl/BaseRepositoryImpl.java | 66 ++++++++++++++++++++++ 3 files changed, 128 insertions(+) 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 fdd275f..947ee58 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 @@ -3,7 +3,9 @@ package cn.estsh.i3plus.pojo.base.bean; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; /** * @Description : hql脚本封装类 @@ -25,6 +27,19 @@ public class DdlPackBean { */ private HashMap hqlPreparedMap; + public List getHqlColumns() { + return hqlColumns; + } + + public void setHqlColumns(List hqlColumns) { + this.hqlColumns = hqlColumns; + } + + /** + * 用于存放查询的特定字段名称 select column1,column2 from + */ + private List hqlColumns; + //是否是hql private boolean isHql; @@ -44,15 +59,43 @@ public class DdlPackBean { this.isHql = true; whereAppend = new StringBuilder(); hqlPreparedMap = new HashMap<>(); + hqlColumns = new ArrayList<>(); } public DdlPackBean(boolean isHql){ this.isHql = isHql; whereAppend = new StringBuilder(); hqlPreparedMap = new HashMap<>(); + hqlColumns = new ArrayList<>(); } /** + * 指定特定查询字段 + * @param hqlColumns + * @return + */ + public static DdlPackBean getDdlPackBean(List hqlColumns){ + DdlPackBean result = new DdlPackBean(); + result.setHqlColumns(hqlColumns); + DdlPreparedPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),"isDeleted",result); + DdlPreparedPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(),"isValid",result); + return result; + } + + /** + * 指定特定查询字段 + * @param hqlColumns + * @return + */ + public static DdlPackBean getDdlPackBean(List hqlColumns,String organizeCode){ + DdlPackBean result = new DdlPackBean(); + result.setHqlColumns(hqlColumns); + DdlPreparedPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),"isDeleted",result); + DdlPreparedPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(),"isValid",result); + DdlPreparedPack.getStringEqualPack(organizeCode,"organizeCode",result); + return result; + } + /** * 查询制定组织有效的数据 * @param organizeCode * @return diff --git a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/jpa/dao/BaseRepository.java b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/jpa/dao/BaseRepository.java index 62ecbd3..a926759 100644 --- a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/jpa/dao/BaseRepository.java +++ b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/jpa/dao/BaseRepository.java @@ -94,6 +94,7 @@ public interface BaseRepository extends JpaReposito /** * 强删除 */ + @Override void deleteById(ID id); int deleteByProperty(String propName, Object propValue); int deleteByPropertyIn(String propName, Object[] propValues); @@ -239,6 +240,14 @@ public interface BaseRepository extends JpaReposito T getByProperty(DdlPackBean packBean); + /** + * + * @param ddlPackBean + * @param queryColumns 是否指定查询某些特定字段 + * @return + */ + List getByProperty(DdlPackBean ddlPackBean, boolean queryColumns); + T getByProperty(String propertyName, Object value); T getByProperty(String[] propertyNames, Object[] values); @@ -266,6 +275,14 @@ public interface BaseRepository extends JpaReposito List findByHqlWhere(DdlPackBean packBean); + /** + * + * @param packBean + * @param queryColumns 是否指定查询某些特定字段 + * @return + */ + List findByHqlWhere(DdlPackBean packBean, boolean queryColumns); + List findByHqlWhere(String hqlWhere,String[] propertyNames, Object[] values,String orderByStuff); int findByHqlWhereCount(String hqlWhere,String[] propertyNames, Object[] values); @@ -277,6 +294,8 @@ public interface BaseRepository extends JpaReposito List findByHqlWherePage(DdlPackBean packBean, Pager pager); + List findByHqlWherePage(DdlPackBean packBean, Pager pager,Boolean queryColumns); + @Deprecated int findByHqlWhereCount(String hqlWhere); 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 c804ec3..572ee8a 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 @@ -57,10 +57,12 @@ public class BaseRepositoryImpl extends SimpleJpaRep this.snowflakeIdMaker = snowflakeIdMaker; } + @Override public void clearSession(){ entityManager.clear(); } + @Override public void detachObject(T t){ if (t == null) { return; @@ -69,6 +71,7 @@ public class BaseRepositoryImpl extends SimpleJpaRep } //集合设置为游离态 + @Override public void detachList(List list){ if(list != null){ for(T t : list) { @@ -525,6 +528,24 @@ public class BaseRepositoryImpl extends SimpleJpaRep } @Override + public List getByProperty(DdlPackBean ddlPackBean, boolean queryColumns) { + StringBuilder hqlStr = new StringBuilder(); + if (queryColumns && ddlPackBean.getHqlColumns().size() > 0){ + hqlStr.append("select "); + List hqlColumns = ddlPackBean.getHqlColumns(); + hqlColumns.forEach(column ->{ hqlStr.append(column).append(" ");}); + } + Query query = entityManager.createQuery(hqlStr.toString() + " from " + persistentClass.getSimpleName() + + " as model where 1=1 " + ddlPackBean.getPackedHql()); + + for (String key : ddlPackBean.getHqlPreparedMap().keySet()) { + query.setParameter("m_" + key,ddlPackBean.getHqlPreparedMap().get(key)); + } + + return query.getResultList(); + } + + @Override public T getByProperty(String propertyName, Object value) { return getByPropertyPager(new String[]{propertyName}, new Object[]{value}, GETBYPROPERTY_PAGER); } @@ -758,6 +779,26 @@ public class BaseRepositoryImpl extends SimpleJpaRep } @Override + public List findByHqlWhere(DdlPackBean packBean, boolean queryColumns) { + + StringBuilder hqlStr = new StringBuilder(); + if (queryColumns && packBean.getHqlColumns().size() > 0){ + hqlStr.append("select "); + List hqlColumns = packBean.getHqlColumns(); + hqlColumns.forEach(column ->{ hqlStr.append(column).append(" ");}); + } + + Query query = entityManager.createQuery(hqlStr.toString() + " from " + persistentClass.getSimpleName() + + " as model where 1=1 " + packBean.getPackedHql()); + + for (String key : packBean.getHqlPreparedMap().keySet()) { + query.setParameter("m_" + key,packBean.getHqlPreparedMap().get(key)); + } + + return query.getResultList(); + } + + @Override public List findByHqlWhere(String hqlWhere, String[] propertyNames, Object[] values, String orderByStuff) { if(propertyNames.length != values.length){ throw new IllegalArgumentException("参数名的数量和参数值不匹配!propertyNames:" @@ -894,6 +935,31 @@ public class BaseRepositoryImpl extends SimpleJpaRep } } + @Override + public List findByHqlWherePage(DdlPackBean packBean, Pager pager, Boolean queryColumns) { + if(pager != null) { + + StringBuilder hqlStr = new StringBuilder(); + if (queryColumns && packBean.getHqlColumns().size() > 0){ + hqlStr.append("select "); + List hqlColumns = packBean.getHqlColumns(); + hqlColumns.forEach(column ->{ hqlStr.append(column).append(" ");}); + } + Query query = entityManager.createQuery(hqlStr.toString() +" from " + persistentClass.getSimpleName() + + " as model where 1=1 " + packBean.getPackedHql()); + + for (String key : packBean.getHqlPreparedMap().keySet()) { + query.setParameter("m_" + key,packBean.getHqlPreparedMap().get(key)); + } + + return query.setFirstResult(pager.getStartRow()) + .setMaxResults(pager.getPageSize()) + .getResultList(); + }else{ + return new ArrayList(); + } + } + @Deprecated @Override public int findByHqlWhereCount(String hqlWhere) {