Hibernate動態查詢工具類RequestQuery

public class RequestQuery {

    private String parameterName;
    private String compareType;
    private Object value;
    // get set

    public static List<RequestQuery> buildRequestQuery(HttpServletRequest request)
            throws IllegalAccessException {
        List<RequestQuery> requestQueryList = new ArrayList<>();
        //獲取所有查詢參數的鍵值
        Enumeration<String> enumeration = request.getParameterNames();
        while(enumeration.hasMoreElements()) {
            String queryKey = enumeration.nextElement();
            String value = request.getParameter(queryKey);
            if (queryKey.startsWith("q_") && !"".equals(value) && value != null) {
                //q_productName_like_s
                String[] array = queryKey.split("_");
                if (array == null && array.length != 4) {
                    throw new IllegalAccessException("查詢條件異常:" + queryKey);
                }
                RequestQuery query = new RequestQuery();
                query.setParameterName(array[1]);
                query.setCompareType(array[2]);
                query.setValue(transValueType(array[3],value));
                requestQueryList.add(query);
            }
        }
        return requestQueryList;
    }

    //將查詢參數的value值進行轉化的方法
    private static Object transValueType(String valueType,String value) {
        if ("s".equalsIgnoreCase(valueType)) {
            return value;
        }
        if ("d".equalsIgnoreCase(valueType)) {
            return Double.valueOf(value);
        }
        if("f".equalsIgnoreCase(valueType)) {
            return Float.valueOf(value);
        }
        if("i".equalsIgnoreCase(valueType)) {
            return Integer.valueOf(value);
        }
        if("bd".equalsIgnoreCase(valueType)) {
            return new BigDecimal(value);
        }
        return null;
    }


}
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容