Mybatis语法bug

select *

from appointment

where status = 'ACCEPTED'

and expire_time< now()

idea显示now()这里一直报错:

应为标记名称

应为=
Deepseek:

根据您的代码和报错信息分析,这是一个 MyBatis XML 文件中的 SQL 语法问题。具体原因及解决方案如下:

  1. XML 特殊字符问题
    < now() 中的小于号 < 是 XML 保留字符,必须转义为 &lt;,建议将条件改为:

    xml 复制代码
    expire_time &lt; now()
  2. 数据库函数兼容性建议

    若使用 MySQL 数据库,推荐改用 CURRENT_TIMESTAMP 替代 now()(功能相同但更符合 SQL 标准):

    xml 复制代码
    expire_time &lt; CURRENT_TIMESTAMP
  3. CDATA 区块方案

    对于含特殊字符的 SQL 片段,可用 CDATA 包裹避免转义:

    xml 复制代码
    <![CDATA[
    expire_time < CURRENT_TIMESTAMP
    ]]>
  4. 完整修正示例

    xml 复制代码
    <select id="getTimeoutAppointments" resultType="cn.edu.hactcm.vitallink.entity.user.Appointment">
        SELECT * 
        FROM appointment 
        WHERE status = 'ACCEPTED' 
        AND expire_time &lt; CURRENT_TIMESTAMP
    </select>

补充说明:若使用 Oracle 数据库需改用 SYSDATE,PostgreSQL 建议使用 CURRENT_TIMESTAMP。建议检查数据库类型并统一时间函数的使用规范。

相关推荐
Mcband2 小时前
MyBatis 拦截器让搞定监控、脱敏和权限控制
mybatis
╭╰4022 小时前
苍穹外卖优化-续
java·spring·mybatis
weixin_456904273 小时前
基于Spring Boot + MyBatis的用户管理系统配置
spring boot·后端·mybatis
彭刷子3 小时前
【Bug】Nexus无法正常启动的五种解决方法
bug·nexus
黑客飓风7 小时前
从基础功能到自主决策, Agent 开发进阶路怎么走?
面试·log4j·bug
mahuifa9 小时前
C++(Qt)软件调试---bug排查记录(36)
c++·bug·软件调试
Kyln.Wu9 小时前
【python实用小脚本-205】[HR揭秘]手工党逐行查Bug的终结者|Python版代码质量“CT机”加速器(建议收藏)
开发语言·python·bug
码熔burning10 小时前
Redis 的三种高效缓存读写策略!
redis·缓存·mybatis
2501_9301040418 小时前
Bug 排查日记:打造高效问题定位与解决的技术秘籍
bug
weixin_3776348418 小时前
【YOLO】数据增强bug
yolo·bug