jeecg自定义datagrid查询
生活随笔
收集整理的這篇文章主要介紹了
jeecg自定义datagrid查询
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
jeecg自定義datagrid查詢
為什么要寫這篇文章?
我們了解,使用 jeecg 提供的 CriteriaQuery 查詢方式,確實能滿足絕大數的需求,但是往往有那么個比較復雜的情況,需要我們直接去寫 sql,比如多表查詢呀等等等等~
因此,就整理了 "自定義 datagrid 查詢" 這篇文章,希望這篇文章對你有所幫助。
后臺datagrid方法
在此就不詳細描述業務需求了,假裝巴拉巴拉巴拉一堆復雜業務描述,最終用一個十分簡單的
sql 給表示了:
看一下代碼部分:
(params?=?"datagrid")public?void?datagrid(MyyWorkOrderEntity?myyWorkOrder,HttpServletRequest?request,?HttpServletResponse?response,?DataGrid?dataGrid)?{
????CriteriaQuery?cq?=?new?CriteriaQuery(MyyWorkOrderEntity.class,?dataGrid);
????//查詢條件組裝器
????org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq,?myyWorkOrder,?request.getParameterMap());
????try{
????????String?sql1="?SELECT?t.*?FROM?t_s_user?t?";
????????String?sql2="?SELECT?count(t.*)?FROM?t_s_user?t?";
????????//?某一個時間條件的案例
????????String?mwo_reporting_time_begin1?=?request.getParameter("mwo_reporting_time_begin1");
????????String?mwo_reporting_time_end2?=?request.getParameter("mwo_reporting_time_end2");
????????if?(StringUtil.isNotEmpty(mwo_reporting_time_begin1))?{
????????????sql1+="?and?mwo_reporting_time>'"+request.getParameter("mwo_reporting_time_begin1")+"'";
????????????sql2+="?and?mwo_reporting_time>'"+request.getParameter("mwo_reporting_time_begin1")+"'";
????????}
????????if?(StringUtil.isNotEmpty(mwo_reporting_time_end2))?{
????????????sql1+="?and?mwo_reporting_time<'"+request.getParameter("mwo_reporting_time_end2")+"'";
????????????sql2+="?and?mwo_reporting_time<'"+request.getParameter("mwo_reporting_time_end2")+"'";
????????}
????????...
????????sql1+="?GROUP?BY?a.`id`?order?by?mwo_reporting_time?desc";
????????sql2+="?GROUP?BY?a.`id`?)?b";
????????//?獲取總數,用于分頁使用
????????long?countMwo?=?systemService.getCountForJdbc(sql2);
????????//?轉換為?int?整形
????????int?allCounts?=?(int)countMwo;
????????int?pageSize?=?cq.getPageSize();//?每頁顯示數
????????int?curPageNO?=?PagerUtil.getcurPageNo(allCounts,?cq.getCurPage(),pageSize);//?當前頁
????????//findForJdbc(sql1);?sql
????????//findHql(hql1);?hql
????????//?獲取數據列表,參數一:查詢的sql、參數二三:當前頁碼、數據總數
????????List<Map<String,?Object>>?listMwo=systemService.findForJdbc(sql1,?curPageNO,?pageSize);
????????cq.getDataGrid().setResults(listMwo);
????????cq.getDataGrid().setTotal(allCounts);
????}catch?(Exception?e)?{
????????throw?new?BusinessException(e.getMessage());
????}
????TagUtil.datagrid(response,?dataGrid);
}
該方法,主要實現 sql 部分的拼裝,從而實現數據 List<Map<String,Object>> 的獲取,注意,這個地方可是要牽扯到分頁的!這也是為什么要同時寫兩個 sql ~
前臺jsp界面
需要注意的是,界面中 t:dgCol 中的 filed 不同以往,該處需要使用數據庫表字段,畢竟上邊獲取的 List<Map<String,Object>> 中沒有實體屬性嘛。
部分參考:
<t:dgCol?title="更新人id"??field="update_by"></t:dgCol><t:dgCol?title="更新人姓名"??field="update_name"></t:dgCol>
<t:dgCol?title="更新日期"??field="update_date"??formatter="yyyy-MM-dd"></t:dgCol>
<t:dgCol?title="創建人id"??field="create_by"></t:dgCol>
<t:dgCol?title="創建人姓名"??field="create_name"?queryMode="group"></t:dgCol>
最后
關于文中 "后臺 datagrid 方法" 中的代碼并沒有進行詳細的講解,其實代碼部分還是比較簡單的,兩個 sql ,一個用于求總數,一個用于實現條件查詢,復雜部分主要在于業務 sql 的書寫。
文章作者:niceyoo
文章地址:https://www.cnblogs.com/niceyoo/p/10519574.html
如果覺得文章對你有所幫助,右下方點個推薦~
posted @ 2019-03-12 20:51 niceyoo 閱讀(...) 評論(...) 編輯 收藏
總結
以上是生活随笔為你收集整理的jeecg自定义datagrid查询的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IoT平台功能架构图
- 下一篇: page,client,offset区别