1. 程式人生 > >資料庫查詢語句,追加條件的寫法。

資料庫查詢語句,追加條件的寫法。

本篇完全為專案中摘抄下來的,僅為本人記錄之用。外人看到,僅做參考。 
 @Override
    public PagedResult<InspPointResultDto> getPointPaged(PointCretiria tQuery) {
        String sql = "select p.*,t.id pointTypeId,t.pointTypeName from insp_point p left join insp_point_type t on p.pointTypeId=t.id where p.is_active = 1 ";
        //名稱 型別 部門
        Map<String , Object> params=new HashMap<>();
        if(!StringUtil.isEmpty(tQuery.getPointName())){
            sql+=" and pointName like :pointName";
            params.put("pointName" , "%"+tQuery.getPointName()+"%");
        }
        if(!StringUtil.isEmpty(tQuery.getPointTypeId())){
            sql+=" and pointTypeId=:poinetTypeId";
            params.put("pointTypeId" , tQuery.getPointTypeId());
        }
        if(!StringUtil.isEmpty(tQuery.getDeptName())){
            sql+=" and pointDept like :pointDept";
            params.put("pointDept" ,"%"+ tQuery.getDeptName()+"%");
        }
        if(!StringUtil.isEmpty(tQuery.getPointNo())){
            sql+=" and p.pointNo like :pointNo";
            params.put("pointNo" ,"%"+ tQuery.getPointNo()+"%");
        }
        sql+=" order by create_datetime desc";
        PagedResult<InspPointResultDto> inspPointDtoPagedResult = this.pagingBySql(tQuery.getPageIndex(), tQuery.getPageSize(), InspPointResultDto.class, sql, params);
        inspPointDtoPagedResult.getResult().stream().forEach(x -> {
            x.setQrcode(WebSettingContext.getHostName() + x.getQrcode());
            x.setPointImage(excuteImageUrl(x.getPointImage()));
        });
        return inspPointDtoPagedResult;
    }