jeecg自定义CriteriaQuery查询组装

@RequestMapping(params = "datagrid")
    public void datagrid(TbTendUserEntity tbTendUser, HttpServletRequest request, HttpServletResponse response,
            DataGrid dataGrid) {

        CriteriaQuery cq = new CriteriaQuery(TbTendUserEntity.class, dataGrid);
        // 查询条件组装器
        org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, tbTendUser, request.getParameterMap());
        try {
            String sql1=" SELECT t.id,t.create_name createName,t.create_by createBy,t.create_date createDate, " +
                    "t.update_name updateName,t.update_by updateBy,t.update_date updateDate,t.sys_org_code sysOrgCode, " +
                    "t.sys_company_code sysCompanyCode,t.bpm_status bpmStatus,t.tend_user_id tendUserId,t.user_name userName, " +
                    "t.pass_word passWord,t.begin_date beginDate,t.end_date endDate,t.id_card_num idCardNum,t.fingerprint_data fingerprintData, " +
                    "t.photograph_data photographData,t.sex,t.age,t.duty,t.`status`,t.will1,t.will2,t.will3,t.user_real userReal, " +
                    "t.schedule_status scheduleStatus,t.group_status groupStatus,t.domicile_location domicileLocation,t.work_location workLocation " +
                    "FROM tb_tend_user t where 1=1 ";
            String sql2=" SELECT COUNT(1) FROM tb_tend_user t where 1=1 ";
            if(StringUtil.isNotEmpty(tbTendUser.getDomicileLocation())) {//户籍所在地过滤
                sql1+="and (domicile_location <> ‘"+tbTendUser.getDomicileLocation()+"‘ or domicile_location is null) ";
                sql2+="and (domicile_location <> ‘"+tbTendUser.getDomicileLocation()+"‘ or domicile_location is null) ";
            }
            if(StringUtil.isNotEmpty(tbTendUser.getWorkLocation())) {//工作地过滤
                sql1+="and (work_location <> ‘"+tbTendUser.getWorkLocation()+"‘ or work_location is null) ";
                sql2+="and (work_location <> ‘"+tbTendUser.getWorkLocation()+"‘ or work_location is null) ";
            }
            if(StringUtil.isNotEmpty(tbTendUser.getGroupStatus())) {//分组状态
                sql1+="and (group_status = ‘"+tbTendUser.getGroupStatus()+"‘ or group_status is null) ";
                sql2+="and (group_status = ‘"+tbTendUser.getGroupStatus()+"‘ or group_status is null) ";
            }
            if(StringUtil.isNotEmpty(tbTendUser.getUserReal())) {//姓名
                sql1+="and (user_real = ‘"+tbTendUser.getUserReal()+"‘) ";
                sql2+="and (user_real = ‘"+tbTendUser.getUserReal()+"‘) ";
            }
            /*获取总数,用于分页使用*/
            long countMwo = systemService.getCountForJdbc(sql2);
            /*转换为 int 整形*/
            int allCounts = (int)countMwo;

            int pageSize = cq.getPageSize();/*每页显示数*/
            int curPageNO = PagerUtil.getcurPageNo(allCounts, cq.getCurPage(),pageSize);/*当前页*/

            /*获取数据列表,参数一:查询的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);
    }

原文地址:https://www.cnblogs.com/baixiuhua/p/12121006.html

时间: 2024-07-30 14:05:50

jeecg自定义CriteriaQuery查询组装的相关文章

jeecg自定义datagrid查询

为什么要写这篇文章? 我们了解,使用 jeecg 提供的 CriteriaQuery 查询方式,确实能满足绝大数的需求,但是往往有那么个比较复杂的情况,需要我们直接去写 sql,比如多表查询呀等等等等~因此,就整理了 "自定义 datagrid 查询" 这篇文章,希望这篇文章对你有所帮助. 后台datagrid方法 在此就不详细描述业务需求了,假装巴拉巴拉巴拉一堆复杂业务描述,最终用一个十分简单的 sql 给表示了: SELECT t.* FROM `t_s_user` t; 看一下代

自定义菜单查询接口

使用接口创建自定义菜单后,开发者还可使用接口查询自定义菜单的结构.另外请注意,在设置了个性化菜单后,使用本自定义菜单查询接口可以获取默认菜单和全部个性化菜单信息. 请求说明 http请求方式:GET https://api.weixin.qq.com/cgi-bin/menu/get?access_token=ACCESS_TOKEN 返回说明(无个性化菜单时) 对应创建接口,正确的Json返回结果: {     "menu": {         "button"

atitit. 集合groupby 的实现(2)---自定义linq查询--java .net php

atitit.  集合groupby 的实现(2)---自定义linq查询--java .net php 实现方式有如下 1. Linq的实现原理流程(ati总结) 1 2. groupby  与 事先排序 2 3. #----------聚合函数 2 4. 自定义linq查询Linq .from(li) .groupBy("url","user" ) .select("url", count().as("countx"), 

golang自定义数据类型查询与插入postgresql中point数据

golang自定义数据类型查询与插入postgresql中point数据 具体代码如下: package main import ( "bytes" "database/sql" "database/sql/driver" "fmt" _ "github.com/lib/pq" "strconv" "strings" ) // 自定义支持类型 type Point s

kettle中使用javascript步骤和fireToDB函数实现自定义数据库查询

kettle中使用javascript步骤和fireToDB函数实现自定义数据库查询 假设你需要实现非传统的数据库查询操作,为了讨论这种情景,我们假设你需要读取数据库中的正则表达式,然后检查输入的每行的字段匹配表达式的个数. 在javascript步骤执行数据库查询 在javascript步骤初始化的时候,查询数据库,获取正则表达式记录集.然后每一行的输入数据循环检查是否匹配表达式,如果匹配,记录变量加一,最后把结果写到到前行的新增字段中.思路很清楚,但是如何在javascript步骤实现数据库

自定义条件查询测试

1 //自定义条件查询测试 2 @Test 3 public void testFindAllByExample() { 4 //分页参数 5 int page = 0;//从0开始 6 int size = 10; 7 /* 8 //分页参数 9 if (page <= 0) { 10 page = 1; 11 } 12 if (size <= 0) { 13 size = 10; 14 } 15 //构造分页查询方法 16 page = page - 1; 17 */ 18 Pageabl

jeecg 扩展封装查询条件 时间段查询

使用jeecg框架开发的小伙伴们知道,添加查询条件,通常是我们加一个配置(query="true")就可以将该字段设置为查询条件.简单方便.但是这样的配置查询条件仅适用于输入框输入查询和下拉框查询(如果你配置的该字段使用了replace).显然,这样的查询条件根本满足不了我们的需求,最常见的就是时间段查询,以及时间段与其他字段混合查询的情况,下面简单说一下解决方法. 自定义查询条件, 第一步:将字段中所有配置的query="true",改为query="f

优化jeecg底层高级查询,支持bool值和下拉框查询

最近在用jeecg做项目,在使用高级查询的时候发现它不支持布尔值的查询以及列表的下拉框的查询,所以小编修改了底层代码,完善了高级查询,现在与大家一起分享.先上一张图给大家看一下修改前的高级查询. 它只支持了文本的查询以及日期格式的查询,很难满足在使用过程中的要求.所以小编把他的功能丰富了一下,下面把源码分享给大家. 首先先简单介绍一下jeecg高级查询的原理,一切的秘密都在DataGridTag这个标签类里面,在打开一个页面的时候,这个类会对页面的左右变迁进行初始化,以及对高级查询的页面进行构造

玩转大数据系列之Apache Pig如何通过自定义UDF查询数据库(五)

GMV(一定时间内的成交总额)是一个衡量电商网站营业收入的一项重要指标,例如淘宝,京东都有这样的衡量标准,感兴趣的朋友可以自己科普下这方面的概念知识. 当然散仙今天,并不是来解释概念的,而是记录下最近工作的一些东西,原来我们平台的GMV只有一个总的成交金额,并没有细分到各个系统的GMV的比重,比如搜索端,推荐端,移动端等等. 通过细粒度的分析各个系统所占的比重,对于指导各个系统完善和发展有一定的重要意义,这里不就深说了,下面先来看下散仙分析的搜索gmv的数据布局方式. (1)Hadoop集群上,