效果如下:

说明:

时间范围的查询会存在以下问题:

1、如果单纯采用年月日的形式会出现缺少最后一点的数据,比如要查询2015-09-16到2015-09-17,那么2015-09-17 01:00:00的数据不会被查询出来。无论是使用between and还是<=/>=的形式去实现都会有这样的问题。

解决方法可以这样做:

1、如果是以年月日的形式,那么可以采用动态拼接字符串的形式,最后得到2015-09-16 00:00:00到2015-09-17 23:59:59,如果要更精确可以往毫秒级别加。

2、采用加1天的形式,比如使用DATE_ADD去增加最后一天,最终得到2015-09-16到2015-09-18。

3、在前端时间控件上采用更精确的输入,比如可以选择年月日时分秒的级别,但是如果要精确到毫秒级别的,需要另做处理,还是使用拼接字符串的形式,或者采用增加函数去增加毫秒级别。

4、如果采用DATE_ADD去增加1天,那么会面临一个问题,就是如果2017-09-18 00:00:00的数据就会被查出来,所以解决方法还是字符串拼接的形式会靠谱一些;或者如果用函数增加时间时,最好不要加满到1天。(初步想法,没实践)

5、如果想要优雅的解决,最完美的方式应该是时间戳的形式,比如将时间转成时间戳的形式去查询。

MyBatis的时间段查询方案:

说明:以下只是查询的语句,没涉及到精确到毫秒级别的查询。

<!-- 查询条件:创建开始时间 -->
<if test="createdBegintime!=null and createdBegintime!=''">
AND CREATED &gt;= #{createdBegintime}
</if> <!-- 查询条件:创建结束时间 -->
<if test="createdEndtime!=null and createdEndtime!=''">
AND CREATED &lt;= #{createdEndtime}
</if>
<if test="date!=null">
<![CDATA[
AND CREATE_TIME >= CONCAT(#{date},' 00:00:00')
AND CREATE_TIME <= CONCAT(#{finish},' 23:59:59')
]]>
</if>
<![CDATA[    这里面是sql语句. 大于号.小于号  ]]>   用这个把大于号.小于号包含起来
<select id="selectOrderListByPage" parameterType="com.xhh.webui.system.entity.Order"
resultType="com.xhh.webui.system.entity.Order">
select * from `order`
<where>
<if test="begindate != null and begindate !=''">
createTime&gt;#{begindate,jdbcType=TIMESTAMP}
</if>
<if test="enddate != null and enddate !=''">
and createTime&lt;#{enddate,jdbcType=TIMESTAMP}
</if>
</where>
<if test="sort != null and order != null">
<![CDATA[ order by ${sort} ${order} ]]>
</if>
LIMIT #{start},#{rows}
</select> 

参考:

http://www.cnblogs.com/zhangliang88/p/5479682.html

http://www.jquerycn.cn/a_15385

http://blog.csdn.net/luckyboyguo/article/details/50427086

http://blog.csdn.net/zl544434558/article/details/24428307?utm_source=tuicool&utm_medium=referral

http://www.cnblogs.com/winner-0715/p/5912157.html

http://bbs.csdn.net/topics/391838987

MyBatis 3实现时间段精确的查询(转)的更多相关文章

  1. mybatis 插入日期类型精确到秒的有关问题

    mybatis 插入日期类型精确到秒的问题 Mybatis 插入 数据库是为了防止插入空时报错, Mybatis 提供了一套机制,只要给定插入的字段的类型,如果为空,则它会自动处理为相应类型的默认值: ...

  2. Mybatis源码分析--关联表查询及延迟加载原理(二)

    在上一篇博客Mybatis源码分析--关联表查询及延迟加载(一)中我们简单介绍了Mybatis的延迟加载的编程,接下来我们通过分析源码来分析一下Mybatis延迟加载的实现原理. 其实简单来说Myba ...

  3. 使用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(三)(错误整理篇)

    使用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(一) 使用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(二) 以上两篇已经把流 ...

  4. 使用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(二)(代码篇)

    这篇是上一篇的延续: 用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(一) 源代码在github上可以下载,地址:https://github.com/guoxia ...

  5. 使用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(一)

    梳理下使用spring+springMVC+mybatis 整合后的一个简单实例:输入用户的 ID,之后显示用户的信息(此次由于篇幅问题,会分几次进行说明,此次是工程的创建,逆向生成文件以及这个简单查 ...

  6. MyBatis基础入门《八》查询参数传入Map

    MyBatis基础入门<八>查询参数传入Map 描述: 在执行select查询数据的时候,方法传入的参数是java.util.Map类型. 接口方法: xml文件 注意: 书写SQL语句的 ...

  7. MyBatis基础入门《七》查询参数传入对象

    MyBatis基础入门<七>查询参数传入对象 描述: 在执行查询语句的时候,传入的参数是一个对象,依据对象的属性,进行检索数据.此时,书写SQL语句中的条件时,其参数需要和对象中的属性保持 ...

  8. MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架

    MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以使用简单的XML或注解用 ...

  9. Mybatis中动态SQL多条件查询

    Mybatis中动态SQL多条件查询 mybatis中用于实现动态SQL的元素有: if:用if实现条件的选择,用于定义where的字句的条件. choose(when otherwise)相当于Ja ...

随机推荐

  1. PCB SQL SERVER 正则应用实例

    我们用过SQL SERVER的都知道,SQL SERVER它本身是不自带正则表达式的,因为没有,所以基本都没用过啊, 但我们在C#中对文本匹配用正则的方式处理非常好用,省得你写一堆代码实现匹配,多简洁 ...

  2. javaEE框架获取和传参要使用的类和接口

    1:spring  2:struts2获取前台数据(action中获取) //4修改用户密码. public String updateUserPassword() throws Exception{ ...

  3. Python机器学习算法 — KNN分类

    KNN简介 K最近邻(k-Nearest Neighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一.KNN分类算法属于监督学习. 最简单最初级的分类器是将全部的训练 ...

  4. 34、JavaScript面向对象(内置构造函数&相关方法|属性|运算符&继承&面向对象)

    一.面向对象 1.1 this的指向问题 要看清楚最终的函数调用者是谁. IIFE也被当做函数直接运行,IIFE的this都是window对象 函数的arguments是类数组对象,比如传入的第0项参 ...

  5. Axure基础教程

    文字教程:      https://www.axure.com.cn/3608/ 视频教程:      http://www.iqiyi.com/playlist409963402.html

  6. 【PL/SQL】用星号拼出金字塔

    代码中首先声明了几个变量,然后使用嵌套循环去输出空格和星号,其中: 每层空格数=总层数-该层层数 每层星号数=当前层数*2-1 代码如下: declare v_number1 ); --外层循环控制金 ...

  7. JS高级——静态成员与实例成员

    静态成员:构造函数的属性和方法 实例成员:实例化之后对象的属性和方法 // $("#id").css(); // $("#id").text(); // $.t ...

  8. Caffe2:python -m caffe2.python.operator_test.relu_op_test

    1. 进行语句测试时候,出现问题, 设置环境变量CUDA_VISIBLE_DEVICES 参考: cuda设置指定可见方法 在/etc/profile文件或者-/.bashrc末尾添加以下行: exp ...

  9. k[原创]Faster R-CNN论文翻译

    物体检测论文翻译系列: 建议从前往后看,这些论文之间具有明显的延续性和递进性. R-CNN SPP-net Fast R-CNN Faster R-CNN Faster R-CNN论文翻译   原文地 ...

  10. Centos 安装 Moosefs文件系统

    一.环境介绍Moosefs master:192.168.55.148Moosefs Metalogger:192.168.55.149Moosefs Chunk-01:192.168.55.150M ...