xufenglei
2018-08-31 9437c74510c25be9d2413821c65fcf6ca4e6d21a
src/main/java/com/moral/common/util/ExampleUtil.java
@@ -18,9 +18,13 @@
@Log4j
public class ExampleUtil {
    private final static String OR_SPLIT = "or\\|";
    private final static String CRITERIA_SPLIT = "\\|\\|\\|";
    private final static String CONDITION_SPLIT = "\\|\\|";
    private final static String SPLIT = "\\|";
    private final static String OR = "_OR";
    private final static String OR_SPLIT = OR+SPLIT;
    private final static String CRITERIA = "_CR";
    private final static String CRITERIA_SPLIT = CRITERIA+SPLIT;
    private final static String CONDITION = "_CO";
    private final static String CONDITION_SPLIT = CONDITION+SPLIT;
    private static Map<String, Method> criteriaMethodMap = new ConcurrentHashMap<>();
    private static void setOrderByClause(Example example,String orderByClause) throws UnsupportedEncodingException, NoSuchFieldException {
           orderByClause = URLDecoder.decode(orderByClause,"UTF-8");
@@ -55,7 +59,7 @@
            }
            if(!StringUtils.isNullOrEmpty(params)){
                params = URLDecoder.decode(params, "UTF-8");
                if (!StringUtils.isNullOrEmpty(params) && params.startsWith("or|")) {
                if (params.startsWith(OR)) {
                    String[] criteria = params.trim().split(OR_SPLIT);
                    for (String criterion : criteria) {
                        // criterion为null或""跳过
@@ -139,7 +143,16 @@
            List<Example.Criteria> criteriaList = example.getOredCriteria();
            if(criteriaList!=null&&criteriaList.size()>0){
                for(Example.Criteria cri : criteriaList){
                    cri.andNotEqualTo("isDelete", Constants.IS_DELETE_TRUE);
                    boolean isHasIsDelete = false;
                    for(Example.Criterion con : cri.getCriteria()){
                          if( con.getCondition().indexOf("is_delete") >-1) {
                              isHasIsDelete = true;
                              break;
                          }
                    }
                    if( !isHasIsDelete) {
                        cri.andNotEqualTo("isDelete", Constants.IS_DELETE_TRUE);
                    }
                }
            }else {
                example.or().andNotEqualTo("isDelete",Constants.IS_DELETE_TRUE);