日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

jeecg自定义datagrid查询

發布時間:2023/12/10 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jeecg自定义datagrid查询 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

jeecg自定義datagrid查詢

為什么要寫這篇文章?

我們了解,使用 jeecg 提供的 CriteriaQuery 查詢方式,確實能滿足絕大數的需求,但是往往有那么個比較復雜的情況,需要我們直接去寫 sql,比如多表查詢呀等等等等~
因此,就整理了 "自定義 datagrid 查詢" 這篇文章,希望這篇文章對你有所幫助。

后臺datagrid方法

在此就不詳細描述業務需求了,假裝巴拉巴拉巴拉一堆復雜業務描述,最終用一個十分簡單的
sql 給表示了:

SELECT?t.*?FROM?`t_s_user`?t;

看一下代碼部分:

@RequestMapping(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查询的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。