From d0cac648f300f39664cb51f7f9c4e1533739527e Mon Sep 17 00:00:00 2001 From: alwaysfrin <39822157+alwaysfrin@users.noreply.github.com> Date: Tue, 16 Apr 2019 19:02:50 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0update=E9=80=9A=E8=BF=87DdlPa?= =?UTF-8?q?ck?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../i3plus/pojo/base/jpa/dao/BaseRepository.java | 9 ++++++ .../pojo/base/jpa/daoimpl/BaseRepositoryImpl.java | 34 ++++++++++++++++++++++ 2 files changed, 43 insertions(+) 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 6a48fbe..4c07060 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 @@ -105,6 +105,15 @@ public interface BaseRepository extends JpaReposito int updateByProperties(String conditionName, Object conditionValue, String[] propertyName, Object[] propertyValue); /** + * 通过属性进行多个值更新 + * @param propertyName + * @param propertyValue + */ + int updateByProperties(String propertyName, Object propertyValue,DdlPackBean packBean); + int updateByProperties(String[] propertyName, Object[] propertyValue,DdlPackBean packBean); + + + /** * 通过多个属性进行单个值更新 * @param conditionName * @param conditionValue 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 4145076..3de0adf 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 @@ -222,6 +222,40 @@ public class BaseRepositoryImpl extends SimpleJpaRep } @Override + public int updateByProperties(String propertyName, Object propertyValue,DdlPackBean packBean) { + return updateByProperties(new String[] { propertyName }, new Object[] { propertyValue },packBean); + } + + @Override + public int updateByProperties(String[] propertyName, Object[] propertyValue,DdlPackBean packBean) { + if ((propertyName != null) && (propertyName.length > 0) && (propertyValue != null) + && (propertyValue.length > 0) && (propertyName.length == propertyValue.length)) { + StringBuffer sb = new StringBuffer(); + + sb.append("update " + persistentClass.getName() + " model set "); + for (int i = 0; i < propertyName.length; i++) { + sb.append(propertyName[i] + " = :p_" + propertyName[i] + ","); + } + sb.deleteCharAt(sb.length() - 1); + sb.append(" where 1=1 " + packBean.getWhereAppend()); + + Query query = entityManager.createQuery(sb.toString()); + //更新值 + for (int i = 0; i < propertyName.length; i++) { + query.setParameter("p_" + propertyName[i], propertyValue[i]); + } + //查询条件 + for (String key : packBean.getHqlPreparedMap().keySet()) { + query.setParameter(key,packBean.getHqlPreparedMap().get(key)); + } + + return query.executeUpdate(); + } else { + throw new IllegalArgumentException("参数值错误!,propertyName:" + propertyName + ",propertyValue:" + propertyValue); + } + } + + @Override public int updateByHqlWhere(String hqlWhere, String propertyName, Object propertyValue) { return updateByHqlWhere(hqlWhere, new String[]{propertyName}, new Object[]{propertyValue}); }