文档章节

jeecg3.5中自动构造查询条件的一个比较严重的bug

z_jordon
 z_jordon
发布于 2015/04/27 17:03
字数 433
阅读 2007
收藏 0
点赞 0
评论 0

当数据库字段的类型为数字型,如为integer类型时,如果把该字段设置为查询条件,并且为范围查询,如下:

 <t:dgCol title="统计日期" field="sumDate" query="true" queryMode="group"></t:dgCol>

其中sumDate在数据库中是int型的,这时生成的界面如下:

这时如果输入一个数字型的值,如20150401,会报类型转换错误。

原因是在org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil的这个类中的installHqlJoinAlias方法中拼装查询条件时没有根据字段的类型来判断,原来的代码是这样子的:

// 添加 判断是否有区间值
String beginValue = null;
String endValue = null;
...
//这边没有判断当前的字段是什么类型统一传的都是String类型的值,当字段类型为数字型时会出错
ObjectParseUtil.addCriteria(cq, aliasName,HqlRuleEnum.GE, beginValue);
ObjectParseUtil.addCriteria(cq, aliasName,HqlRuleEnum.LE, endValue);

我的解决方案是根据字段的类型判断判断需要传入的类型,如下,

//单独写一个方法来处理类型的判断和转换
private static void addCriteria(String value, CriteriaQuery cq, String aliasName, HqlRuleEnum rule, String type) {
		if (StringUtil.isNotEmpty(value)) {
			if (type.equals("class java.lang.Integer")) {
				ObjectParseUtil.addCriteria(cq, aliasName,
						rule, new Integer(value));
			} else if (type.equals("class java.lang.Long")) {
				ObjectParseUtil.addCriteria(cq, aliasName,
						rule, new Integer(value));
			} else if (type.equals("class java.lang.Double")) {
				ObjectParseUtil.addCriteria(cq, aliasName,
						rule, new Double(value));
			} else if (type.equals("class java.lang.Float")) {
				ObjectParseUtil.addCriteria(cq, aliasName,
						rule, new Float(value));
			} else {
				ObjectParseUtil.addCriteria(cq, aliasName,
						rule, value);
			}
			
		}
	}

修改后的代码如下:

addCriteria(beginValue, cq, aliasName, HqlRuleEnum.GE, type);
						addCriteria(endValue, cq, aliasName, HqlRuleEnum.LE, type);
//这边没有判断当前的字段是什么类型统一传的都是String类型的值,当字段类型为数字型时会出错
//ObjectParseUtil.addCriteria(cq, aliasName,HqlRuleEnum.GE, beginValue);
//ObjectParseUtil.addCriteria(cq, aliasName,HqlRuleEnum.LE, endValue);					
						
					}


© 著作权归作者所有

共有 人打赏支持
z_jordon
粉丝 35
博文 250
码字总数 78212
作品 0
厦门
技术主管
jeecg的几个bug

无参数的构造函数中如果有进行字段的初始化则使用默认的查询时会自动带上这些查询条件 如实体BlackListEntity的构造函数如下: public BlackListEntity(){//默认状态为启用state = new Integ...

z_jordon ⋅ 2015/04/20 ⋅ 0

BugFree 3.0.1 正式发布!

点击下载BugFree 3.0.1 主要更新如下: 易用性改进 URL引用简化 ../index.php?r=info/index&type=bug&product_id=2 => ../bug/list/2 ../index.php?r=info/edit&type=bug&id=27 => ../bug/2......

红薯 ⋅ 2012/01/03 ⋅ 2

Mybatis 分页插件 3.3.1 发布

如果你也在用Mybatis,建议尝试该分页插件,这个一定是最方便使用的分页插件。 该插件目前支持Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库分页。 3.3.1更新说明: 该版本主要修...

Liuzh_533 ⋅ 2014/12/08 ⋅ 10

yii2使用原生语句执行数据库操作yii\db\Query和yii\db\Command

某些情况下我们并不需要启用比较重的AR去操作数据库,这里Yii2也为我们提供了 yiidbQuery 查询构造器 只能创建 查询 命令 yiidbCommand sql命令工具 可以创建 curd 操作 两个工具类来满足此类...

big_cat ⋅ 2016/05/13 ⋅ 0

MySQL · 捉虫状态 · bug分析两例

BUG 1 IN查询结果不对 背景 在mysql5.6.16版本下,构建如下测试用例 从例子可以看到当tmptablesize=262144时,查询结果不对,而tmptablesize=1610241024时查询结果是正确的。 分析 查询结果跟...

阿里云RDS-数据库内核组 ⋅ 2016/09/07 ⋅ 0

写一个“特殊”的查询构造器 - (八、单元测试、收尾工作)

debug 模式 对查询构造器进行调试并不难,从其构造 SQL -> 数据绑定 -> SQL 执行的过程中就能发现,要方便调试,只要可以观察以下信息: 构造的 SQL 绑定的数据 PDO 提供了一个方便的 debug ...

MrQ被抢注了 ⋅ 05/24 ⋅ 0

FlyQuery 0.8 发布

一款免费的通用查询FlyQuery,开发普通查询列表只需10分钟 下载地址:http://hi.baidu.com/flyquery 在线例子:http://www.flyquery.com/ 例子部署步骤: 1、安装MySQL,执行语句 create dat...

TL ⋅ 2010/04/10 ⋅ 0

FlyQuery-0.5发布,一款免费的通用查询,开发普通查询列表只需10分钟

一款免费的通用查询FlyQuery,开发普通查询列表只需10分钟 下载地址:http://hi.baidu.com/flyquery 例子部署步骤: 1、安装MySQL,执行语句 create database flyquery; 2、安装 tomcat6.0以...

TL ⋅ 2009/05/20 ⋅ 0

jeecg3.5中为dgCol标签增加自定义格式化列中的数值的功能

jeecg3.5中只有formatter属性,只支持格式化时间格式的数据,不支持自定义格式化列中的值的功能,比如想把列中的的一个int或long型的值除以100转成float或doulbe值,jeecg3.5版本就不支持类似...

z_jordon ⋅ 2015/04/22 ⋅ 0

写一个“特殊”的查询构造器 - (六、关联)

关联查询是关系型数据库典型的查询语句,根据两个或多个表中的列之间的关系,从这些表中查询数据。在 SQL 标准中使用 JOIN 和 ON 关键字来实现关联查询。 Join 子句 join 子句的构造并不难,...

MrQ被抢注了 ⋅ 05/22 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

使用 vue-cli 搭建项目

vue-cli 是一个官方发布 vue.js 项目脚手架,使用 vue-cli 可以快速创建 vue 项目,GitHub地址是:https://github.com/vuejs/vue-cli 一、 安装 node.js 首先需要安装node环境,可以直接到中...

初学者的优化 ⋅ 23分钟前 ⋅ 0

设计模式 之 享元模式

设计模式 之 享元模式 定义 使用共享技术来有效地支持大量细粒度对象的复用 关键点:防止类多次创建,造成内存溢出; 使用享元模式来将内部状态与外部状态进行分离,在循环创建对象的环境下,...

GMarshal ⋅ 38分钟前 ⋅ 0

SpringBoot集成Druid的最简单的小示例

参考网页 https://blog.csdn.net/king_is_everyone/article/details/53098350 建立maven工程 Pom文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM......

karma123 ⋅ 今天 ⋅ 0

Java虚拟机基本结构的简单记忆

Java堆:一般是放置实例化的对象的地方,堆分新生代和老年代空间,不断未被回收的对象越老,被放入老年代空间。分配最大堆空间:-Xmx 分配初始堆空间:-Xms,分配新生代空间:-Xmn,新生代的大小一...

算法之名 ⋅ 今天 ⋅ 0

OSChina 周日乱弹 —— 这么好的姑娘都不要了啊

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @TigaPile :分享曾惜的单曲《讲真的》 《讲真的》- 曾惜 手机党少年们想听歌,请使劲儿戳(这里) @首席搬砖工程师 :怎样约女孩子出来吃饭,...

小小编辑 ⋅ 今天 ⋅ 8

Jenkins实践3 之脚本

#!/bin/sh# export PROJ_PATH=项目路径# export TOMCAT_PATH=tomcat路径killTomcat(){pid=`ps -ef | grep tomcat | grep java|awk '{print $2}'`echo "tom...

晨猫 ⋅ 今天 ⋅ 0

Spring Bean的生命周期

前言 Spring Bean 的生命周期在整个 Spring 中占有很重要的位置,掌握这些可以加深对 Spring 的理解。 首先看下生命周期图: 再谈生命周期之前有一点需要先明确: Spring 只帮我们管理单例模...

素雷 ⋅ 今天 ⋅ 0

zblog2.3版本的asp系统是否可以超越卢松松博客的流量[图]

最近访问zblog官网,发现zlbog-asp2.3版本已经进入测试阶段了,虽然正式版还没有发布,想必也不久了。那么作为aps纵横江湖十多年的今天,blog2.2版本应该已经成熟了,为什么还要发布这个2.3...

原创小博客 ⋅ 今天 ⋅ 0

聊聊spring cloud的HystrixCircuitBreakerConfiguration

序 本文主要研究一下spring cloud的HystrixCircuitBreakerConfiguration HystrixCircuitBreakerConfiguration spring-cloud-netflix-core-2.0.0.RELEASE-sources.jar!/org/springframework/......

go4it ⋅ 今天 ⋅ 0

二分查找

二分查找,也称折半查找、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于...

人觉非常君 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部