diff --git a/modules/i3plus-pojo-base/pom.xml b/modules/i3plus-pojo-base/pom.xml index a397cee..c5bfff4 100644 --- a/modules/i3plus-pojo-base/pom.xml +++ b/modules/i3plus-pojo-base/pom.xml @@ -23,6 +23,11 @@ com.fasterxml.jackson.core jackson-databind + + org.apache.commons + commons-lang3 + + diff --git a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/CommonEnumUtil.java b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/CommonEnumUtil.java index f1f9201..3163fd9 100644 --- a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/CommonEnumUtil.java +++ b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/CommonEnumUtil.java @@ -388,7 +388,6 @@ public class CommonEnumUtil { } } - /** * 是否有效 */ @@ -422,7 +421,6 @@ public class CommonEnumUtil { } } - /** * 排序方式 */ @@ -455,4 +453,39 @@ public class CommonEnumUtil { return tmp; } } + + /** + * 父节点配置 + */ + public enum PARENT{ + + DEFAULT(-1L,"根节点"); + + private Long value = -1L; + private String description = null; + + public Long getValue() { + return value; + } + + public String getDescription() { + return description; + } + + private PARENT(Long value, String description) { + this.value = value; + this.description = description; + } + + public static String valueOf(int val) { + String tmp = null; + for (int i = 0; i < values().length; i++) { + if (values()[i].value == val) { + tmp = values()[i].description; + } + } + return tmp; + } + } + } 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 ed8613c..32b769b 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 @@ -77,6 +77,12 @@ public interface BaseRepository extends JpaReposito public void deleteByProperties(String[] propName, Object[] propValue); /** + * 通过 in 批量删除 + * @param ids 熟悉值数组 + */ + public void deleteByIdIn(Long[] ids); + + /** * 通过多单属性进行单个值更新 * @param conditionName * @param conditionValue @@ -112,6 +118,24 @@ public interface BaseRepository extends JpaReposito */ public int updateByProperties(String[] conditionName, Object[] conditionValue, String[] propertyName, Object[] propertyValue); + /** + * 根据 hqlWhere 批量修改制定字段 + * @param hqlWhere + * @param propertyName 修改的字段名称 + * @param propertyValue 修改后的值 + * @return + */ + public int updateByHqlWhere(String hqlWhere,String propertyName, Object propertyValue); + + /** + * 批量修改数据熟悉 + * @param hqlWhere HQL where 语句 + * @param propertyName 修改的字段名称 + * @param propertyValue 修改后的值 + * @return + */ + public int updateByHqlWhere(String hqlWhere,String[] propertyName, Object[] propertyValue); + public T getById(long id); public List list(); 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 333cb8b..712bd20 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 @@ -1,14 +1,15 @@ package cn.estsh.i3plus.pojo.base.jpa.daoimpl; +import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.jpa.dao.BaseRepository; import cn.estsh.i3plus.pojo.base.tool.SnowflakeIdMaker; -import cn.estsh.i3plus.pojo.base.common.Pager; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.data.jpa.repository.support.SimpleJpaRepository; import javax.persistence.EntityManager; import javax.persistence.Id; import javax.persistence.Query; -import javax.persistence.TypedQuery; import java.io.Serializable; import java.lang.reflect.Field; import java.util.*; @@ -22,6 +23,8 @@ import java.util.*; **/ public class BaseRepositoryImpl extends SimpleJpaRepository implements BaseRepository { + public static final Logger LOGGER = LoggerFactory.getLogger(BaseRepositoryImpl.class); + /** * 持久化上下文 */ @@ -141,6 +144,19 @@ public class BaseRepositoryImpl extends SimpleJpaRep } @Override + public void deleteByIdIn(Long[] ids) { + if(ids != null && ids.length > 0){ + String hql = "delete from " + persistentClass.getName() + " o where o.id in(:ids) "; + Query query = entityManager.createQuery(hql); + query.setParameter("ids", Arrays.asList(ids)); + + query.executeUpdate(); + }else{ + throw new IllegalArgumentException("Method deleteByPropertiesIn argument is illegal! ids:" + ids); + } + } + + @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 }); } @@ -161,17 +177,20 @@ public class BaseRepositoryImpl extends SimpleJpaRep && (propertyValue.length > 0) && (propertyName.length == propertyValue.length) && (conditionValue != null) && (conditionValue.length > 0)) { StringBuffer sb = new StringBuffer(); + sb.append("update " + persistentClass.getName() + " o 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 "); appendQL(sb, conditionName, conditionValue); Query query = entityManager.createQuery(sb.toString()); for (int i = 0; i < propertyName.length; i++) { query.setParameter("p_" + propertyName[i], propertyValue[i]); } + setParameter(query, conditionName, conditionValue); return query.executeUpdate(); } else { @@ -181,6 +200,36 @@ public class BaseRepositoryImpl extends SimpleJpaRep } @Override + public int updateByHqlWhere(String hqlWhere, String propertyName, Object propertyValue) { + return updateByHqlWhere(hqlWhere, new String[]{propertyName}, new Object[]{propertyValue}); + } + + @Override + public int updateByHqlWhere(String hqlWhere, String[] propertyName, Object[] propertyValue) { + if ((propertyName != null) && (propertyName.length > 0) && (propertyValue != null) + && (propertyValue.length > 0) && (propertyName.length == propertyValue.length)) { + StringBuffer sb = new StringBuffer(); + + sb.append("update " + persistentClass.getName() + " o 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 "); + sb.append(hqlWhere); + Query query = entityManager.createQuery(sb.toString()); + for (int i = 0; i < propertyName.length; i++) { + query.setParameter("p_" + propertyName[i], propertyValue[i]); + } + + return query.executeUpdate(); + } else { + throw new IllegalArgumentException("Method updateByProperties argument is illegal! propertyName:" + propertyName + ",propertyValue:" + propertyValue); + } + } + + @Override public T getById(long id) { return this.getOne(id); } @@ -292,7 +341,6 @@ public class BaseRepositoryImpl extends SimpleJpaRep return queryObject.getResultList(); } - @Override public T getByProperty(String propertyName, Object value) { String queryString = "from " + persistentClass.getSimpleName() + " as model where model." + propertyName + "= :" + propertyName; @@ -548,7 +596,8 @@ public class BaseRepositoryImpl extends SimpleJpaRep queryString.append(hqlWhere); } - return entityManager.createQuery(queryString.toString(),Integer.class).getSingleResult(); + Long count = entityManager.createQuery(queryString.toString(), Long.class).getSingleResult(); + return count == null ? 0 : count.intValue(); } @Override 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 f3902c5..6698784 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 @@ -1,7 +1,5 @@ package cn.estsh.i3plus.pojo.base.tool; -import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; - import java.text.SimpleDateFormat; import java.util.Date;