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 阅读(...) 评论(...) 编辑 收藏

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/414575.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mailto发送邮件

mailto后面加发送邮件地址&#xff0c;可以在网页上通过链接直接打开邮件客户端发送邮件&#xff1b;只有第一个可以 1 <!DOCTYPE html>2 <html>3 <head>4 <meta charset"UTF-8">5 <title></title>6 &l…

Failed to resolve: org.jetbrains.kotlin:kotlin-stdlib-jre7:1.3.21

第一次在Android studio 创建kotlin项目。编译报错&#xff1a; Failed to resolve: org.jetbrains.kotlin:kotlin-stdlib-jre7:1.3.21 解决方法 // implementation"org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"implementation "org.jetbrai…

jeecg自定义按钮使用exp属性不起作用

jeecg自定义按钮使用exp属性不起作用 为什么要写这篇文章&#xff1f; 之前写过一篇类似的文章 jeecg笔记之自定义显示按钮exp属性&#xff0c;但是有些小伙伴留言参考后不起作用&#xff0c;当时我的 jeecg 版本为3.7.5&#xff0c;最终以版本不同&#xff0c;暂时搁浅了。今…

使用java修改图片DPI

修改以后可以直接用PS打开看效果 全部使用rt下的类&#xff0c;无需下载其他jar包 import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGEncodeParam; import com.sun.image.codec.jpeg.JPEGImageEncoder; import javax.imageio.ImageIO; …

Android studio 创建kotlin工程

1、安装kotlin插件 打开settings页面。安装插件 2、已安装kotlin插件即可创建kotlin项目 打开New Project。选中Includ Kotlin support即可 3、创建kotlin或者java的activity 选中语音类型kotlin或者java kotlin项目创建完成 kotlin工程demo链接&#xff1a;https://download…

改造一下jeecg中的部门树

改造一下jeecg中的部门树 假装有需求 关于 jeecg 提供的部门树&#xff0c;相信很多小伙伴都已经用过了&#xff0c;今天假装有那么一个需求 "部门树弹窗选择默认展开下级部门"&#xff0c;带着这个需求再次去探索一下吧。 一、改造之前的部门选择树流程 1.1 t:depa…

html 知识

一 html是什么&#xff1f; ,1、超文本标记语言&#xff08;Hypertext Markup Language, HTML&#xff09;是一种用于创建网页的标记语言。 2、本质上是浏览器可识别的规则&#xff0c;我们按照规则写网页&#xff0c;浏览器根据规则渲染我们的网页。对于不同的浏览器&#xff…

Android kotlin基础语法

1、继承类和实现接口 继承类是冒号连接&#xff0c;java是extends连接。实现接口是逗号连接&#xff0c;java是implements连接 class MainActivity : AppCompatActivity(),MyKotlinInterface ,MyInterface{ java&#xff1a;public class Main3Activity extends AppCompatAc…

工作245:vue的注意规范之v-if 与 v-for 一起使用

当 v-if 与 v-for 一起使用时&#xff0c;v-for 具有比 v-if 更高的优先级&#xff0c;这意味着 v-if 将分别重复运行于每个 v-for 循环中 所以&#xff0c;不推荐v-if和v-for同时使用 使用推荐方式&#xff1a; 或者&#xff1a;放在计算属性遍历 当它们处于同一节点&#x…

Django create_user with is_active=False

Django create_user with is_activeFalse 下面的内容来自官方文档is_active布尔值。指示用户的账号是否激活。我们建议把这个标记设置为False 来代替删除账号&#xff1b;这样的话&#xff0c;如果你的应用和User 之间有外键关联&#xff0c;外键就不会失效。 它不是用来控制用…

Android kotlin实现底部导航栏

1、实现效果&#xff0c;可点击或者滑动切换fragment 点击 滑动 实现方法&#xff1a; 1、创建三个fragment.kt 2、创建fragmentAdapter class MyFragmentAdapter(fragmentManage…

jeecg富文本编辑器增加字体(仿宋)

jeecg富文本编辑器增加字体(仿宋) jeecg富文本编辑器增加字体(仿宋) 温馨提示&#xff1a;jeecg 提供了 uedit 富文本的实现&#xff0c;如下针对的是 uedit 增加仿宋字体示例。 主要修改三个文件&#xff1a;plug-in\ueditor\ueditor.config.js、plug-in\ueditor\lang\en\en.…

Android kotlin使用RecyclerView实例

1、创建entity类 class InternentBarEntity {var bname: String? nullvar barea: String? nullvar badddata: String? nullvar bimage: String? nullvar bid: String? null } 2、创建adapter类 /***作者&#xff1a;created by meixi*邮箱&#xff1a;15913707499…

DNS记录类型

在之前的文章中&#xff0c;我们了解了什么是DNS以及DNS如何工作&#xff0c;现在让我们来看看 DNS 记录有哪些种类&#xff0c;以及它们有什么作用。 要理解不同的 DNS 记录&#xff0c;首先必须了解区域文件是什么? 我们来解释一下各部分分别表示什么&#xff1a; A 和 AAAA…

Android 频道管理,可拖动item排列,删除,添加

样式效果 1、创建自定义GridView /*** 作者&#xff1a;created by meixi* 邮箱&#xff1a;15913707499163.com* 日期&#xff1a;2019/5/31 13*/public class DragGridView extends GridView {/** 点击时候的X位置 */public int downX;/** 点击时候的Y位置 */public int dow…

2019王小的Java学习之路

文章背景 身边有个非常要好的朋友王某某&#xff0c;因为是发小的关系&#xff0c;之后文章统称为王小。 大专毕业后 顺利 的被安排进了某某工厂工作&#xff0c;工作一段时间后&#xff0c;尽管工作比较轻松&#xff0c;却无法忍受终日的流水线生活&#xff0c;经过我的介绍&…