Activit自定義SQL語句查詢
阿新 • • 發佈:2018-12-19
String organid = "admin"; List<Model> listModel = null; try { //獲取該使用者建立的模型 <!--通過測試自定義的sql語句最高支援表級別的,也就是有實實在在資料庫中有對應的實際的表,而不是某一個狀態中的如:ModelQuery型別不行,只有list的Model型別 --> listModel = repositoryService.createNativeModelQuery() .sql("SELECT * FROM "+managementService.getTableName(Model.class)+" h WHERE h.tenant_id_ like #{organid} ") .parameter("organid", organid+":%").listPage(page.getFirstResult(), page.getMaxResults()); } catch (NullPointerException e) { throw new NullPointerException("該使用者沒有建立模型"); } finally { if (listModel == null) { page.setCount(0); page.setList(null); return page; } if (listModel != null) { //篩選符合category模型 if (category != null){ List<Model> listModelIsCategory = new ArrayList<>(); for(Model list : listModel) { if (category.equals(list.getCategory())) { listModelIsCategory.add(list); } } listModel = listModelIsCategory; } page.setCount(listModel.size()); page.setList(listModel); return page; } }
managementService.getTableName(Model.class):
managementService是activit中的介面,不必要連線其過多的實現;通過其指定匹配實體類Model
注意:所使用的查詢篩選的條件不是寫在sql()方法中而是寫在parameter()方法中,其中1.引數名稱2.引數值
建議對自定義的activiti的sql語句進行try,我在測試的時候發現,沒有資料的時候偶爾會出現空指標異常.