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。建议检查数据库类型并统一时间函数的使用规范。

相关推荐
netyeaxi3 小时前
Java:使用spring-boot + mybatis如何打印SQL日志?
java·spring·mybatis
小七mod4 小时前
【MyBatis】MyBatis与Spring和Spring Boot整合原理
spring boot·spring·mybatis
椰椰椰耶13 小时前
【MyBatis】XML实现,配置方法和增、删、改、查
xml·oracle·mybatis
GJCTYU16 小时前
spring中@Transactional注解和事务的实战理解附代码
数据库·spring boot·后端·spring·oracle·mybatis
zzc9211 天前
Adobe Illustrator设置的颜色和显示的颜色不对应问题
adobe·bug·illustrator·错误·配色·透明度·底色
DuelCode1 天前
Windows VMWare Centos Docker部署Springboot 应用实现文件上传返回文件http链接
java·spring boot·mysql·nginx·docker·centos·mybatis
荔枝吻1 天前
【沉浸式解决问题】idea开发中mapper类中突然找不到对应实体类
java·intellij-idea·mybatis
JAVA学习通1 天前
Mybatis--动态SQL
sql·tomcat·mybatis
新world2 天前
mybatis-plus从入门到入土(二):单元测试
单元测试·log4j·mybatis
RainbowSea2 天前
问题 1:MyBatis-plus-3.5.9 的分页功能修复
java·spring boot·mybatis