一、疑难问题

1、数据表的业务时间是字符串类型。

2、如何通过hql语句进行业务时间范围筛选。

二、解决方法

1、将业务时间字符串类型转换成时间类型。

mysql中字符串转时间:str_to_date(‘字符串时间’,‘%Y-%m-%d %H:%i:%s’);oracle中字符串转时间:to_date('字符串时间,‘yyyy-MM-dd hh24:mi:ss’)。

2、范围筛选:between … and …

三、具体代码

/*** 查询大数据数据列表* @param req 请求参数对象* @param res 响应参数对象* @param ctx* @throws SecurityException* @throws ServiceException*/
public void getAllBigData(Map<String, Object> req, Map<String, Object> res,Context ctx) throws SecurityException, ServiceException  {Map<String,Object> params = new HashMap<String, Object>();String where = getCnd(req,res,ctx);StringBuffer buffer = new StringBuffer();StringBuffer total = new StringBuffer();buffer.append(" FROM X");total.append(" FROM X");if (null != req.get("cnd")) {buffer.append(where);total.append(where);} else {buffer.append(" where 1=1");total.append(" where 1=1");}// 获取mpi标识Object mpiFlag = req.get("mpiFlag");if (null != mpiFlag){buffer.append(" and mpiFlag ='F'");total.append(" and mpiFlag ='F'");}// 获取解包标识Object unpackFlag = req.get("unpackFlag");if (null != unpackFlag){buffer.append(" and unpackFlag ='F'");total.append(" and unpackFlag ='F'");}// 获取业务开始时间Object effectiveTime_start = req.get("effectiveTime_start");// 获取业务结束时间Object effectiveTime_end = req.get("effectiveTime_end");if (null != effectiveTime_start && null != effectiveTime_end){// 转换为字符串类型的业务时间String effectiveTimeStartStr = effectiveTime_start.toString().concat(" 00:00:00";String effectiveTimeEndStr = effectiveTime_end.toString().concat(" 23:59:59";// 获取数据库配置db.propertiesProperties properties ;// 数据库的连接地址String dbUrl = null;try {properties = PropertiesLoaderUtils.loadAllProperties("platform/config/db.properties");dbUrl = properties.getProperty("db.url");}catch (IOException ioEx){ioEx.printStackTrace();logger.error("获取数据库配置db.properties异常:"+ioEx.getMessage());}// 数据库的连接地址是包含mysql还是oracleif (null != dbUrl && dbUrl.contains("mysql")) {// mysql中字符串转时间:str_to_date()buffer.append(" and str_to_date(effectiveTime,'%Y-%m-%d %H:%i:%s') between str_to_date('" + effectiveTimeStartStr + "','%Y-%m-%d %H:%i:%s')");buffer.append(" and str_to_date('" + effectiveTimeEndStr + "','%Y-%m-%d %H:%i:%s')");total.append("  and str_to_date(effectiveTime,'%Y-%m-%d %H:%i:%s') between str_to_date('" + effectiveTimeStartStr + "','%Y-%m-%d %H:%i:%s')");total.append("  and str_to_date('" + effectiveTimeEndStr + "','%Y-%m-%d %H:%i:%s')");}if (null != dbUrl && dbUrl.contains("oracle")) {// oracle中字符串转时间:to_date()buffer.append(" and to_date(effectiveTime,'yyyy-MM-dd hh24:mi:ss') between to_date('" + effectiveTimeStartStr + "','yyyy-MM-dd hh24:mi:ss')");buffer.append(" and to_date('" + effectiveTimeEndStr + "','%Y-%m-%d %H:%i:%s')");total.append("  and to_date(effectiveTime,'yyyy-MM-dd hh24:mi:ss') between to_date('" + effectiveTimeStartStr + "','yyyy-MM-dd hh24:mi:ss')");total.append("  and to_date('" + effectiveTimeEndStr + "','yyyy-MM-dd hh24:mi:ss')");}}Integer page = Integer.parseInt(req.get("pageNo").toString());Integer pageSize = Integer.parseInt(req.get("pageSize").toString());Integer start = (page - 1) * pageSize;List list = SqlUtils.createQuery_NoPage(buffer, params, start, pageSize);Integer totalNum = SqlUtils.createQuery_NoPage(total,params).size();res.put("body", list);res.put("totalCount",totalNum);
}

四、总结

1、数据表字段类型设计,需要考虑好字段类型,选择合适的字段类型。

2、对于字段类型不一样的情况,需要考虑到如果修改字段类型影响大,那就选择转换字段类型。

hibernate中的hql语句,字符串时间范围筛选处理相关推荐

  1. 应用hibernate中的hql语句对日期的操作总结

    ------------------------------------------------------------------------这篇文章是我在进行hibernate查询时由于百度搜索很 ...

  2. hibernate中的hql查询语句list查询所有与iterate查询所有的区别

    hibernate中的hql查询语句list查询所有与iterate查询所有的区别 list查询所有: 01,会立即产生一条select语句1select查询出来的所有语句都会被session管理, ...

  3. hibernate 学习之——hql 语句

    hibernate 学习之--hql 语句 hibernatre hql 语句:是对于hibernate的orm模式的一种类似于JDBC语句的面对对象的操作语句 特点 : 1.对于类名属性名区分大小写 ...

  4. 使用SQLQuery 在Hibernate中使用sql语句

    对原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行Session.createSQLQuery()获取这个接口.下面来描述如何使用这个API进行查询. 1.标量查询(Scalar q ...

  5. Hibernate中的HQL的基本常用小例子,单表查询与多表查询

    <span style="font-size:24px;color:#3366ff;">本文章实现HQL的以下功能:</span> /*** hql语法:* ...

  6. hibernate中的hql带有参数的参数语句以及二级缓存

    hql带有参数的参数语句直接写到test方法里面 package com.hp.dao; import java.util.List; import org.hibernate.Session; im ...

  7. 在Excel中使用SQL语句查询和筛选

    本文转自:http://blog.sina.com.cn/s/blog_5fc375650102e1g5.html 今天在微博上看到@数据分析精选 分享的一篇文章,是关于<在Excel中使用SQ ...

  8. sql转java对象_关于hibernate中使用sql语句时,类对象的转换问题。

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 @SuppressWarnings("unchecked") public List getAllStorytell(Long use ...

  9. HQL语句中数据类型转换,及hibernate中createQuery执行hql报错

    一.HQL语句中数据类型转换: 我们需要从数据库中取出序号最大的记录,想到的方法就是使用order by子句进行排序(desc倒序),然后取出第一个对象,可是当初设计数据库时(我们是在原来的数据库的基 ...

最新文章

  1. ACMNO.42 C语言-第几天 定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年问题。利用结构体的在最下面
  2. 【转载】ATI显卡在Ubuntu下设置方法(很全面)
  3. java basic认证_Basic认证
  4. 计算机与图像处理论文标题,数字图像处理论文各种题目.doc
  5. SQL Server 2000 JDBC驱动的完整安装及测试说明
  6. 字符串混淆技术应用 设计一个字符串混淆程序 可混淆.NET程序集中的字符串
  7. 14--用两个栈实现队列
  8. 信息安全系统设计基础第四周学习总结—20135227黄晓妍
  9. 满足StrataFlash嵌入式存储器要求的LDO应用电路
  10. 如何设置几个循环出来的span其中一个宽度_css几个概念
  11. python基于协程的网络库gevent、eventlet
  12. Python进阶(九)常用高级函数Counter、defaultdict、nametuple、map、reduce、filter、groupby
  13. 闭合导线平差计算(表面)
  14. java暗装没有快捷键,java强行videos
  15. 堆排序算法实现(最小堆)
  16. NPN和PNP型传感器或开关如何接线?
  17. 揪出系统中秘密隐藏的木马(下)
  18. 联想android怎么解密,联想G886手机如何解密
  19. 常用的大功率电阻有哪些,电阻功率降额设计要注意什么
  20. 科学家学习天竺葵特性,研制出用水分子来驱动的微型机器人

热门文章

  1. Python制作 .fasta文件的解析器
  2. 微信小程序文字转语音并播放
  3. linux 创建用户命令
  4. 通过国家码切换默认输入法
  5. 动态规划篇——最长公共子序列(c++)
  6. python中打印5个空格的代码是_如何在Python中打印空格?
  7. 近百种围巾的系法和搭配
  8. C++11中模板类std::enable_shared_from_this的使用
  9. 快手推出“原片”对标字节“醒图”,百亿修图市场好进吗?
  10. W3c phpl基础参考手册-2016-01参考