`
y806839048
  • 浏览: 1120674 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

mybatis 时间区间比较

阅读更多

mybatis 时间区间比较

 

jdbcType=TIMESTAMP  ,jdbcType=DATE决定了时间的格式
有些函数不同版本的mysql不具备
注意 传入的是date类型  <if test="empId != null and empId != ''" >
AND o.EMP_ID = ${empId}
</if>
不能有类似and empId != ''这样和字符串的比较,除非你传入的是专为string后的类型
### Error querying database.  Cause: java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String
### Cause: java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String] with root cause

java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String
at org.apache.ibatis.ognl.OgnlOps.compareWithConversion(OgnlOps.java:93)
at org.apache.ibatis.ognl.OgnlOps.isEqual(OgnlOps.java:143)
at org.apache.ibatis.ognl.OgnlOps.equal(OgnlOps.java:802)
at org.apache.ibatis.ognl.ASTNotEq.getValueBody(ASTNotEq.java:53)
at org.apache.ibatis.ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212)
at org.apache.ibatis.ognl.SimpleNode.getValue(SimpleNode.java:258)
at org.apache.ibatis.ognl.ASTAnd.getValueBody(ASTAnd.java:61)
at org.apache.ibatis.ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212)
。。。。
<![CDATA[   ]]>只是转义<  > 这种特殊符号
数据库日期是字符串类型可以和程序中传来的字符串日期直接比价,数据库是日期类型需要把传来的
字符类型日期转化成日期类型再比较

直接上代码,此时数据库使用的Date类型:(即:数据库类型date,传入是string)

复制代码
    <if test="minCreateTime != null and  minCreateTime != ''">
            <![CDATA[ and g.create_time >= to_date(#{minCreateTime,jdbcType=DATE},'yyyy-MM-dd hh24:mi:ss')]]>
        </if>
        <if test="maxCreateTime != null and  maxCreateTime != ''">
            <![CDATA[ and g.create_time <= to_date(#{maxCreateTime,jdbcType=DATE},'yyyy-MM-dd hh24:mi:ss')]]>
        </if>
复制代码

若数据库是字符串类型,也可以直接比较,如下:(传入的是date,数据库任意类型)

复制代码
       <if test="createTime != null">
                AND CREATE_TIME = CONCAT(CONCAT('%', #{createTime,jdbcType=DATE}), '%')
            </if>
            <if test="updateTime != null">
                AND UPDATE_TIME = CONCAT(CONCAT('%', #{updateTime,jdbcType=DATE}), '%')
            </if>
复制代码

 

 

<if test="minCreateTime != null and  minCreateTime != ''">
            <![CDATA[ and g.create_time >= to_date(#{minCreateTime,jdbcType=DATE},'yyyy-MM-dd hh24:mi:ss')]]>
        </if>
        <if test="maxCreateTime != null and  maxCreateTime != ''">
            <![CDATA[ and g.create_time <= to_date(#{maxCreateTime,jdbcType=DATE},'yyyy-MM-dd hh24:mi:ss')]]>
        </if>

业务驱动技术,技术是手段,业务是目的。
 
 
 
 
<if test="(prassignTime != null )" >
  <![CDATA[ and o.ASSIGN_TIME  >= #{prassignTime,jdbcType=TIMESTAMP} ]]>
</if>
<if test="(lsassignTime != null)" >
  <![CDATA[ and o.ASSIGN_TIME <= #{lsassignTime,jdbcType=TIMESTAMP} ]]>
</if>
<if test="(prfirstdailTime != null ) " >
  <![CDATA[ and o.FIRSTDAIL_TIME  >= #{prfirstdailTime,jdbcType=TIMESTAMP} ]]>
</if>
<if test=" (lsfirstdailTime != null)" >
  <![CDATA[ and o.FIRSTDAIL_TIME  <= #{lsfirstdailTime,jdbcType=TIMESTAMP} ]]>
</if>
<if test="status != null and status != ''" >
  AND o.STATUS = ${status}
</if>

或者:
<if test="prassignTime != null  and prassignTime != ''" >
  and o.ASSIGN_TIME  &gt;= #{prassignTime,jdbcType=VARCHAR}
</if>
<if test="lsassignTime != null and lsassignTime != ''" >
  and o.ASSIGN_TIME &lt;= #{lsassignTime,jdbcType=VARCHAR}
</if>
 
可以转化数据库字段,条件字段:

to_char   
to_date

转化数据库字段:
SELECT C.* FROM TB_CUS_FIRM_CHG C WHERE 1 = 1 AND to_char(C.CHK_TIME, 'yyyy-mm-dd') >= ? AND 
to_char(C.CHK_TIME, 'yyyy-mm-dd') <= ? order by C.CUSTOMER_KEY asc

转化条件字段:
  <if test="maxCreateTime != null and  maxCreateTime != ''">
            <![CDATA[ and g.create_time <= 
to_date(#{maxCreateTime,jdbcType=DATE},'yyyy-MM-dd hh24:mi:ss')]]>
        </if>
分享到:
评论

相关推荐

    mybatis-plus学习项目笔记

    QueryWrapper和LambdaQueryWrapper是MyBatis-Plus的条件构造器,它们可以方便地组合各种查询条件,如等于、不等于、大于、小于、区间等。 6. **动态SQL** MyBatis-Plus继承了MyBatis的动态SQL功能,可以通过`if`...

    Mybatis plus增强工具包 v3.5.5.zip

    通过@TableId、@TableField等注解,你可以设置字段自动填充策略,如创建时间和更新时间,无需手动处理这些细节。 在v3.5.5版本中,可能包含了一些性能优化和新特性。例如,可能会有对大数据量处理的性能提升,或者...

    Flot+springboot+mybatis 日期格式的折线图

    5. **交互功能**:用户可以通过交互方式(如点击、拖动或缩放)来查看不同时间段的数据,前端会再次通过Ajax发送请求,获取新的数据区间,Flot图表会实时更新。 通过这样的组合,这个项目提供了一个直观的、动态的...

    spring动态数据源+mybatis分库分表

    范围分片则根据某个字段的范围(如用户ID的连续区间)进行分片;时间戳分片适合按时间顺序生成的数据,如日志记录。 4. **ShardingSphere**:在实际项目中,通常会使用ShardingSphere这样的中间件来辅助实现分库...

    Mybatis特殊字符处理的详解

    例如,在上述例子中,我们试图查询时间区间内的数据,但小于号 `被误识别为开始标签,导致解析错误。 二、问题描述 假设我们有以下这样的查询条件: ```xml != null"&gt; and l.CREATE_TIME &gt;= #{startTime} != ...

    MyBatisPlus条件构造器Condition的用法示例代码

    MyBatisPlus是一款基于MyBatis的扩展框架,它提供了更为简洁、强大的API,使得数据库操作变得更加简单。在MyBatisPlus中,`Condition`类是用于构建动态SQL的重要工具,它可以实现灵活的条件查询,使得开发者无需手动...

    毕业设计,基于SSM+MyBatis+MySql+Bootstrap开发的房屋租赁平台,内含Java完整源代码,数据库脚本

    毕业设计,基于SSM+MyBatis+MySql+Bootstrap开发的房屋租赁平台,内含Java完整源代码,数据库脚本 基于SSM房屋租赁平台设计 用户信息: 用户名,密码,姓名,性别,出生日期,身份证,籍贯,照片,家庭地址 区域信息: 记录...

    Mysql中时间戳转为Date的方法示例

    在MySQL数据库中,时间戳与日期之间的转换是常见的操作,特别是在处理日志系统或需要对时间数据进行分析的场景下。本篇文章将详细介绍如何在MySQL中将时间戳转换为日期,以及日期转换回时间戳的方法。 1. **时间戳...

    Java基于java的健身房管理系统的设计与实现+vue基于Spring+SpringMVC+MyBatis框架.zip

    健身器材列表此页面提供给管理员的功能有:对全部的健身器材的一个管理、可以根据健身器材名称进行模糊查询、根据时间区间来进行判断器材的是否损坏。 账号管理此页面提供给管理员的功能有:对会员信息的一个管理,...

    MySql 按时间段查询数据方法(实例说明)

    时间格式为2008-06-16 查询出当天数据: SELECT * FROM `table` WHERE date(时间字段) = curdate(); 查询出当月字段: SELECT * FROM `table` WHERE month( 时间字段) = month( now( ) ) ; 时间格式为1219876…… ...

    PostgreSQL分区表(partitioning)应用实例详解

    项目中有需求要垂直分表,即按照时间区间将数据拆分到n个表中,PostgreSQL提供了分区表的功能。分区表实际上是把逻辑上的一个大表分割成物理上的几小块,提供了很多好处,比如: 1、查询性能大幅提升 2、删除历史...

    java物联网源码 风电监测物联网源码

    风速风向区间统计信息 风速、风向由持续时间来统计某时间段内的风速大小和风向角。 功率区间统计 功率大小通过持续时间来统计某时间段内的具体功率,并以图形化折线图显示。 机舱实时信息 实时统计机舱数据。风机...

    JAVA的SpringBoot物联网风电监测系统源码 iot物联网风电能源电场监控系统源码数据库 MySQL源码类型 WebFo

    功率区间统计 功率大小通过持续时间来统计某时间段内的具体功率,并以图形化折线图显示。 机舱实时信息 实时统计机舱数据。风机序号、机舱温度、机舱角度、齿轮箱油温度、低速轴温度、 高速轴唯独、齿轮油压力、...

    Sword(SpringBlade前端) v3.5.0.zip

    1. SpringBlade背景:SpringBlade是一个全面的Java企业级开发平台,集成了许多开源优秀组件,如MyBatis、Shiro、Spring Boot等,旨在提高开发效率,简化项目构建。其前端部分,即Sword,作为用户界面的基石,同样...

    Java-Employee-Time-Clock:这是我的员工打卡版本,允许您设置用户并跟踪打卡和打卡时间

    系统可能还使用了这些API来处理时间区间、工作日和节假日的判断。 **5. UI界面** 员工和管理员可能通过一个图形用户界面(GUI)与系统交互,这可能使用JavaFX或Swing库来实现。UI设计应考虑易用性和效率,提供清晰...

    liuliangtongji_java_

    测试可能涵盖流量计算、时间区间判断等各种功能模块。 9. **MVC架构**:如果这是一个Web应用,它可能采用了Model-View-Controller(MVC)架构。Spring框架的MVC模块可以帮助构建这样的应用,处理HTTP请求,控制业务...

    src-(1).zip_zip

    为了实现高效的时间区间搜索,可能会使用数据结构如二叉堆、红黑树或者优先队列。 2. **Course.java**: Course类代表了课程实体,它可能包含课程的ID、名称、描述、学分、开始和结束时间等属性。此外,它还可能...

    ssm项目weixin135房屋租赁管理系统的设计与实现+ssm.zip

    3. **搜索筛选**:租客可以根据地理位置、价格区间、房型等条件搜索并筛选合适的房源。 4. **在线预约**:租客可以在线预约看房时间,直接与房东或中介沟通。 5. **合同管理**:系统提供租赁合同的电子签署和管理,...

    基于springboot大学生租房系统.zip

    房源搜索则通过关键词、价格区间等条件帮助租客快速找到合适的房源;预约看房功能使租客能预先安排看房时间,避免冲突;用户管理涵盖了注册、登录、个人信息维护等功能,确保用户信息安全。 在后端开发中,通常会...

Global site tag (gtag.js) - Google Analytics