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
如果觉得文章对你有所帮助,右下方点个推荐~
18年专科毕业后,期间一度迷茫,最近我创建了一个公众号用来记录自己的成长。

jeecg自定义datagrid查询的更多相关文章
- JEECG中datagrid方法自定义查询条件
自定义加添加查询条件的用法: CriteriaQuery cq = new CriteriaQuery(EquipmentEntity.class, dataGrid); //查询条件组装器 org. ...
- jeecg中列表查询数据关联其他表的显示
1.A表字段:id,name;B表字段:id,name,fid(A表外键),现查询A表和B表的所有数据并且查询条件A,B都有,在前台页面list显示 2.后台方法: @RequestMapping(p ...
- atitit. 集合groupby 的实现(2)---自定义linq查询--java .net php
atitit. 集合groupby 的实现(2)---自定义linq查询--java .net php 实现方式有如下 1. Linq的实现原理流程(ati总结) 1 2. groupby 与 事 ...
- Hibernate自定义字段查询
关于Hibernate自定义字段查询的方法,网上有很多,我这里就不详细写了,只把几个查询方法的注意事项说明一下. 废话少说, 进入正题: 假设有2个实体对象,Institution和User,结构与配 ...
- 演练:使用属性自定义 DataGrid 控件
演练:使用属性自定义 DataGrid 控件 Silverlight 此主题尚未评级 - 评价此主题 Silverlight DataGrid 控件支持常用表格式设置选项,例如交替显示不同的行 ...
- Spring Security教程(二):自定义数据库查询
Spring Security教程(二):自定义数据库查询 Spring Security自带的默认数据库存储用户和权限的数据,但是Spring Security默认提供的表结构太过简单了,其实就 ...
- jeecg 扩展封装查询条件 时间段查询
使用jeecg框架开发的小伙伴们知道,添加查询条件,通常是我们加一个配置(query="true")就可以将该字段设置为查询条件.简单方便.但是这样的配置查询条件仅适用于输入框输入 ...
- jeecg的cq查询方式
@RequestMapping(params = "datagrid") public void datagrid(TbStudentDepEntity tbStudentD ...
- JEECG实现模糊查询
1.JEECG默认不带模糊查询的,但实际开发中会经常用到模糊查询,因此要适当修改(在相应的查询处). @RequestMapping(params = "datagrid") pu ...
随机推荐
- cocos2dx-lua 文件操作
print("开始") --检查文件是否存在 local path = "ABC.txt" local fileExist = cc.FileUtils:get ...
- linux命令进阶
Though unconsciously,peple are indeed moving towards their destination.Slow as the progress seen fro ...
- Hadoop第一式:配置Linux环境
所有操作在虚拟机下完成,虚拟机软件选用VMware Workstation Pro 12 (后文简称为VM) 关于Linux安装不再阐述一.网络环境配置 1)Windows界面 首先在VM页面,点击虚 ...
- org.apache.spark.rpc.RpcTimeout$$anonfun$1.applyOrElse
跑sparkPis示例程序 [root@node01 bin]# ./spark-submit --master spark://node01:7077 --class org.apache.spar ...
- 【原创】sqlite ef6 踩坑
调试的时候配置写如下,这样写是没有问题的但是在实际环境中有问题,因为EF路径找不到.会提示错误:The underlying provider failed on open <connectio ...
- HBase总结 LSM理解
转载的文章,觉得写的比较好 讲LSM树之前,需要提下三种基本的存储引擎,这样才能清楚LSM树的由来: 哈希存储引擎 是哈希表的持久化实现,支持增.删.改以及随机读取操作,但不支持顺序扫描,对应的存储 ...
- JavaEE 之 SpringBoot
1.Springboot a.定义:Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程 b.约定目录结构:(Maven的资源文件目 ...
- Spring Boot 项目实战(五)集成 Dubbo
一.前言 上篇介绍了 Redis 的集成过程,可用于解决热点数据访问的性能问题.随着业务复杂度的提高,单体应用越来越庞大,就好比一个类的代码行数越来越多,分而治之,切成多个类应该是更好的解决方法,所以 ...
- JavaScript(七)
类型转换 1.直接转换 parseInt() 与 parseFloat() alert('12'+7); //弹出127 alert( parseInt('12') + 7 ); //弹出19 ale ...
- iframe ios中h5页面 样式变大
实际项目开发中,iframe在移动设备中使用问题还是很大的,说一说我的那些iframe坑 做过的这个后台管理框架,最开始的需求是PC,但随着业务需要,需要将项目兼容到ipad,后台的框架也是使用的开源 ...