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 22151c7..129cfe3 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 @@ -82,6 +82,16 @@ public interface BaseRepository extends JpaReposito public int deleteWeaklyByProperties(String[] propNames, Object[] objValues); /** + * 更新有效无效状态 + * @return count + */ + public int updateValidStatusById(ID id,int status); + public int updateValidStatusByIds(Long[] ids,int status) ; + public int updateValidStatusByProperty(String propName, Object propValue,int status); + public int updateValidStatusByPropertyIn(String propName, Object[] propValues,int status); + public int updateValidStatusByProperties(String[] propNames, Object[] objValues,int status); + + /** * 通过多单属性进行单个值更新 * @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 1fa0cec..0466c15 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,59 @@ public class BaseRepositoryImpl extends SimpleJpaRep } @Override + public int updateValidStatusById(ID id,int status) { + return updateValidStatusByProperty("id", id,status); + } + + @Override + public int updateValidStatusByIds(Long[] ids,int status) { + return updateValidStatusByPropertyIn("id", ids,status); + } + + @Override + public int updateValidStatusByProperty(String propName, Object propValue,int status) { + return updateValidStatusByProperties(new String[] { propName }, new Object[] { propValue },status); + } + + /** + * 批量弱删除 + * @return + */ + @Override + public int updateValidStatusByPropertyIn(String propName, Object[] propValues,int status) { + if(propValues != null && propValues.length > 0){ + String hql = "update " + persistentClass.getName() + " model set model.isValid = :isValid where model."+propName+" in(:"+propName+") "; + Query query = entityManager.createQuery(hql); + query.setParameter("isValid",status); + query.setParameter(propName, Arrays.asList(propValues)); + + return query.executeUpdate(); + }else{ + throw new IllegalArgumentException("弱删除失败:"+propName+":" + propValues); + } + } + + /** + * 批量弱删除 + * @return + */ + @Override + public int updateValidStatusByProperties(String[] propName, Object[] propValue,int status) { + if ((propName != null) && (propName.length > 0) && (propValue != null) && (propValue.length > 0) && (propValue.length == propName.length)) { + StringBuffer sb = new StringBuffer("update " + persistentClass.getName() + " model set model.isValid = :isValid where 1=1 "); + appendQL(sb,propName,propValue); + Query query = entityManager.createQuery(sb.toString()); + query.setParameter("isValid",status); + + setParameter(query,propName,propValue); + + return query.executeUpdate(); + }else{ + throw new IllegalArgumentException("弱删除失败:"+propName+":" + propValue); + } + } + + @Override public int updateByProperties(String conditionName, Object conditionValue, String propertyName, Object propertyValue) { return updateByProperties(new String[] { conditionName }, new Object[] { conditionValue }, new String[] { propertyName }, new Object[] { propertyValue }); } diff --git a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/tool/HqlPack.java b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/tool/HqlPack.java index 78f3aa7..ca6bba6 100644 --- a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/tool/HqlPack.java +++ b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/tool/HqlPack.java @@ -198,6 +198,18 @@ public class HqlPack { } /** + * 封装String对象成equal语句 + * @param columnName 列名 + * @param result + */ + public static void getStringEqualPackOr(String data,String columnName, StringBuffer result) { + if(data != null && data.trim().length() > 0){ + data = getSafeParam(data); + result.append(" or model."+columnName+" = '" + data + "'"); + } + } + + /** * 封装long或者int的整数对象成equal语句 * @param columnName 列名 * @param result @@ -214,6 +226,18 @@ public class HqlPack { * @param columnName 列名 * @param result */ + public static void getNumEqualPackOr(Object data,String columnName, StringBuffer result) { + if(data!=null&&Long.parseLong(data.toString()) > 0){ + data = getSafeParam(data); + result.append(" or model."+columnName+" = " + data + ""); + } + } + + /** + * 封装long或者int的整数对象成equal语句 + * @param columnName 列名 + * @param result + */ public static void getNumEqualPackForZero(Object data,String columnName, StringBuffer result) { if(data!=null&&Long.parseLong(data.toString()) >= 0){ data = getSafeParam(data);