liferay 高級查詢 (1)

pointExchangeLocalServiceImpl.java 加入的代碼

 /**

     * 積分管理中的查詢方法

     * 

     * @param searchTerms

     * @param companyId

     * @param groupId

     * @param start

     * @param end

     * @return

     * @throws SystemException

     */




    //查詢PointExchange表中所有記錄

    @SuppressWarnings("unchecked")

    public List<PointExchange> findPointExchanges(PointSearchTerms searchTerms, long companyId, int start, int end) throws SystemException {

        DynamicQuery dynamicQuery = getPointExchangeDynamicQuery(searchTerms, companyId);

        return dynamicQuery(dynamicQuery, start, end);

    }


    /**

     * 積分管理中查詢用戶總數

     * 

     * @param searchTerms

     * @param companyId

     * @param groupId

     * @return

     * @throws SystemException

     */

    public int countPointExchange(PointSearchTerms searchTerms, long companyId) throws SystemException {

        DynamicQuery dynamicQuery = getPointExchangeDynamicQuery(searchTerms, companyId);

        return ((Long) dynamicQueryCount(dynamicQuery)).intValue();

    }


    private DynamicQuery getPointExchangeDynamicQuery(PointSearchTerms searchTerms, long companyId) {

        DynamicQuery dynamicQuery = pointExchangePersistence.createDynamicQuery();

        dynamicQuery.add(PropertyFactoryUtil.forName("companyId").eq(companyId));


        if (searchTerms.isAdvancedSearch()) {  //判斷是否是高級查詢

            //高級查詢中的條件(按什麼查詢)

            String realNameLike = searchTerms.getRealNameLike();  

            Date submitDate = searchTerms.getSubmitDate();

            int confirmState = searchTerms.getConfirmState();

            Junction junction = null;

            //and運算

            if (searchTerms.isAndOperator()) {

                junction = RestrictionsFactoryUtil.conjunction();//連接運算,邏輯與

            } else {

                junction = RestrictionsFactoryUtil.disjunction();//邏輯或運算

            }

            if (Validator.isNotNull(realNameLike)) {

                String realNameLikeSql = DAOUtil.getLike(realNameLike); 

                junction.add(PropertyFactoryUtil.forName("realName").like(realNameLikeSql));//模糊查詢

            }

            if (Validator.isNotNull(submitDate)) {

                Calendar cal = Calendar.getInstance();

                cal.setTime(submitDate);

                cal.add(Calendar.DATE, 1);

                Junction dateJunction = RestrictionsFactoryUtil.conjunction();

               //大於等於運算符ge,lt小於運算符,eq等於運算符

                dateJunction.add(PropertyFactoryUtil.forName("submitDate").ge(submitDate));

                dateJunction.add(PropertyFactoryUtil.forName("submitDate").lt(cal.getTime()));

                junction.add(dateJunction);

            }

            if (confirmState != -1) {

                junction.add(PropertyFactoryUtil.forName("confirmState").eq(confirmState));

            }

            dynamicQuery.add(junction);

        } else {

            String keywords = searchTerms.getKeywords(); //關鍵詞搜索

            String realNameLike = keywords;

            if (Validator.isNotNull(realNameLike)) {

                String realNameLikeSql = DAOUtil.getLike(realNameLike);

                dynamicQuery.add(PropertyFactoryUtil.forName("realName").like(realNameLikeSql));

            }

        }


        return dynamicQuery;

    }


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章