• 必须声明表变量 "@P0"


    mybatis提示错误

    ### Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 必须声明表变量 "@P0"。
    ; uncategorized SQLException for SQL []; SQL state [S0001]; error code [1087]; 必须声明表变量 "@P0"。; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: 必须声明表变量 "@P0"。
        at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:84)
        at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)
        at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)
        at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:75)
        at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:447)

    原因是SQL语句中表名作为一个变量,必须写成${tableName}, 而不是写成#{tableName}作为一个参数。

        <select id="queryList" resultType="Map" databaseId="sqlserver">
            SELECT * FROM
            (
            SELECT
                    D.*, ROW_NUMBER () OVER (ORDER BY TmStamp DESC) RN
            FROM
                    ${tableName} D
            ) T
            <if test="limit!=null and offset!=null">
                WHERE RN&lt;=#{limit}+#{offset} AND RN&gt;#{offset}
            </if>
        </select>

    修改后正常。

  • 相关阅读:
    RHEL简单管理SELINUX
    CentOS配置samba服务
    CentOS中配置NFS服务
    CentOS里route命令详解
    Linux 进程管理之四大名捕
    编辑器之神-VIM
    纠结的链接——ln、ln -s、fs.symlink、require
    History(历史)命令用法 15 例
    备份MySQL数据库
    MySQL 资源大全
  • 原文地址:https://www.cnblogs.com/legendjslc/p/7889204.html
Copyright © 2020-2023  润新知