diff --git a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/bean/BaseFallBackBean.java b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/bean/BaseFallBackBean.java index 870b7f7..fecb6e3 100644 --- a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/bean/BaseFallBackBean.java +++ b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/bean/BaseFallBackBean.java @@ -18,23 +18,45 @@ public class BaseFallBackBean { // LOGGER.error("【微服出错,熔断】{}",cause.getCause()); // cause.printStackTrace(); + /** + * 基本熔断信息封装方法 + * @param cause 错误原因 + * @return 基础结果类 + */ public BaseResultBean makeBaseFallBack(Throwable cause){ - LOGGER.error("【熔断信息】{}",cause.getMessage()); - LOGGER.error("【熔断原因】{}",cause.getCause()); - return makeBaseFallBack("【微服熔断】服务暂停,请稍后再试。",cause); + LOGGER.error("【熔断信息】{}", cause.getMessage()); + LOGGER.error("【熔断原因】{}", cause.getCause()); + cause.printStackTrace(); + return makeBaseFallBack("【微服熔断】服务暂停,请稍后再试。", cause); } - public BaseResultBean makeBaseFallBack(String msg,Throwable cause){ - LOGGER.error("【熔断信息】{}",cause.getMessage()); - LOGGER.error("【熔断原因】{}",cause.getCause()); - return BaseResultBean.buildBaseResultBean(false,cause.getMessage() + ",信息:" + msg); + /** + * 自定义熔断信息封装方法 + * @param msg 错误提示 + * @param cause 错误原因 + * @return 基础结果类 + */ + public BaseResultBean makeBaseFallBack(String msg, Throwable cause){ + LOGGER.error("【熔断信息】{}", cause.getMessage()); + LOGGER.error("【熔断原因】{}", cause.getCause()); + cause.printStackTrace(); + return BaseResultBean.buildBaseResultBean(false, cause.getMessage() + ",信息:" + msg); } + /** + * 简化熔断信息方法 + * @return 基础结果类 + */ public BaseResultBean makeBaseFallBack(){ return makeBaseFallBack("【微服熔断】服务暂停,请稍后再试。"); } + /** + * 自定义简化熔断方法 + * @param msg 自定义信息 + * @return 基础结果类 + */ public BaseResultBean makeBaseFallBack(String msg){ - return BaseResultBean.buildBaseResultBean(false,msg); + return BaseResultBean.buildBaseResultBean(false, msg); } } 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/BaseMongoRepositoryImpl.java b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/jpa/daoimpl/BaseMongoRepositoryImpl.java index f81e238..ef58910 100644 --- a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/jpa/daoimpl/BaseMongoRepositoryImpl.java +++ b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/jpa/daoimpl/BaseMongoRepositoryImpl.java @@ -5,8 +5,10 @@ import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.jpa.dao.BaseMongoRepository; import cn.estsh.i3plus.pojo.base.codemaker.SnowflakeIdMaker; import com.alibaba.fastjson.JSONObject; +import com.mongodb.BasicDBObject; import com.mongodb.Block; import com.mongodb.client.FindIterable; +import com.mongodb.client.model.CountOptions; import com.mongodb.client.model.Filters; import com.mongodb.client.model.Sorts; import org.apache.commons.lang3.StringUtils; @@ -21,6 +23,7 @@ import org.springframework.data.mapping.context.MappingContext; import org.springframework.data.mongodb.core.MongoOperations; import org.springframework.data.mongodb.core.mapping.MongoPersistentEntity; import org.springframework.data.mongodb.core.mapping.MongoPersistentProperty; +import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.repository.query.MongoEntityInformation; import org.springframework.data.mongodb.repository.support.SimpleMongoRepository; @@ -271,13 +274,9 @@ public class BaseMongoRepositoryImpl extends SimpleM FindIterable findIter = null; if(bson == null) { - findIter = mongoOperations.getCollection(this.entityInformation.getCollectionName()).find() - .skip(pager.getStartRow()) - .limit(pager.getPageSize()); + findIter = mongoOperations.getCollection(this.entityInformation.getCollectionName()).find(); }else{ - findIter = mongoOperations.getCollection(this.entityInformation.getCollectionName()).find(bson) - .skip(pager.getStartRow()) - .limit(pager.getPageSize()); + findIter = mongoOperations.getCollection(this.entityInformation.getCollectionName()).find(bson); } if(StringUtils.isNotBlank(orderByParam) && ascOrDesc != 0){ //排序 @@ -286,8 +285,13 @@ public class BaseMongoRepositoryImpl extends SimpleM }else{ findIter.sort(Sorts.descending(orderByParam)); } + }else{ + //根据id排序 + findIter.sort(new BasicDBObject("_id", 1)); } + findIter.skip(pager.getStartRow()).limit(pager.getPageSize()); findIter.forEach(saveBlock); + return packObjectListFromDocument(dList); } @@ -310,9 +314,7 @@ public class BaseMongoRepositoryImpl extends SimpleM dList.add(document); } }; - FindIterable findIter = mongoOperations.getCollection(this.entityInformation.getCollectionName()).find() - .skip(pager.getStartRow()) - .limit(pager.getPageSize()); + FindIterable findIter = mongoOperations.getCollection(this.entityInformation.getCollectionName()).find(); if(StringUtils.isNotBlank(orderByParam) && ascOrDesc != 0){ //排序 if(ascOrDesc == CommonEnumUtil.ASC_OR_DESC.ASC.getValue()){ @@ -320,7 +322,11 @@ public class BaseMongoRepositoryImpl extends SimpleM }else{ findIter.sort(Sorts.descending(orderByParam)); } + }else{ + //根据id排序 + findIter.sort(new BasicDBObject("_id", 1)); } + findIter.skip(pager.getStartRow()).limit(pager.getPageSize()); findIter.forEach(saveBlock); return packObjectListFromDocument(dList); } 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}); }