From fb65b042f07d369c6f3ec60e6818bbf49edd5573 Mon Sep 17 00:00:00 2001 From: "wei.peng" <123456> Date: Wed, 17 Jun 2020 14:10:47 +0800 Subject: [PATCH] =?UTF-8?q?getByProperty=20=E6=9F=A5=E8=AF=A2=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../i3plus/pojo/base/jpa/dao/BaseRepository.java | 3 +++ .../pojo/base/jpa/daoimpl/BaseRepositoryImpl.java | 31 +++++++++++----------- 2 files changed, 19 insertions(+), 15 deletions(-) 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 9d06adc..e2e0255 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 @@ -243,6 +243,9 @@ public interface BaseRepository extends JpaReposito T getByProperty(String[] propertyNames, Object[] values); + @Deprecated + T getByPropertyPager(String[] propertyNames, Object[] values,Pager pager); + int listCount(); int findByPropertyCount(String propertyName, Object value); 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 2e3d875..d93bac0 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 @@ -46,6 +46,8 @@ public class BaseRepositoryImpl extends SimpleJpaRep private Class persistentClass; private SnowflakeIdMaker snowflakeIdMaker; + /* 默认查询数据条数 */ + private static final Pager DEFAULT_PAGER = new Pager(0,10); public BaseRepositoryImpl(Class clz, EntityManager em, SnowflakeIdMaker snowflakeIdMaker) { super(clz, em); @@ -506,10 +508,9 @@ public class BaseRepositoryImpl extends SimpleJpaRep @Override public T getByProperty(DdlPackBean packBean) { - try { - List list = findByHqlWhere(packBean); - return list.size() != 0 ? list.get(0) : null; + List list = findByHqlWherePage(packBean,DEFAULT_PAGER); + return list != null && list.size() != 0 ? list.get(0) : null; }catch(NoResultException ne){ LOGGER.error("数据不存在,DdlPackBean:{}",packBean); return null; @@ -521,21 +522,18 @@ public class BaseRepositoryImpl extends SimpleJpaRep @Override public T getByProperty(String propertyName, Object value) { - String queryString = "from " + persistentClass.getSimpleName() + " as model where model." + propertyName + "= :" + propertyName; - try { - List list = entityManager.createQuery(queryString).setParameter(propertyName, value).getResultList(); - return list.size() != 0 ? list.get(0) : null; - }catch(NoResultException ne){ - LOGGER.error("数据不存在,prop:{},value:{}",propertyName,value,ne); - return null; - }catch(NonUniqueResultException ex){ - LOGGER.error("查询单条记录,但出现多条。prop:{},value:{}",propertyName,value,ex); - throw new RuntimeException("存在多条记录:" + ex.getMessage()); - } + return getByPropertyPager(new String[]{propertyName}, new Object[]{value}, DEFAULT_PAGER); } @Override public T getByProperty(String[] propertyNames, Object[] values) { + return getByPropertyPager(propertyNames, values, DEFAULT_PAGER); + } + + @Override + public T getByPropertyPager(String[] propertyNames, Object[] values, Pager pager) { + pager = pager == null ? DEFAULT_PAGER: pager; + if(propertyNames.length != values.length){ throw new IllegalArgumentException("参数名的数量和参数值不匹配!propertyNames:" + propertyNames.length + ",values:" + values.length); } @@ -561,7 +559,10 @@ public class BaseRepositoryImpl extends SimpleJpaRep } try{ - List list = queryObject.getResultList(); + List list = queryObject + .setFirstResult(pager.getStartRow()) + .setMaxResults(pager.getPageSize()) + .getResultList(); return list.size() != 0 ? list.get(0) : null; }catch(NoResultException ne){ LOGGER.error("数据不存在",ne);