两只小蜜蜂 发表于 2021-3-16 08:50

java mybatis PageHelper 求助

<select id="getruledo" parameterType="java.lang.String" statementType="STATEMENT" resultType="Map">
      select * from PLATDS.ST_${name}
    </select>
public List<Map<String,Object>> getruledo(@Param("name")String name);

如图上所示这是我原本的代码,因为表名是动态传进来的所以使用了statementType="STATEMENT"配置,现在数据量过大,要使用PageHelper 进行分页了,但是分页的sql老是执行错误,log中的sql如下
SELECT * FROM (SELECT TMP_PAGE.*,ROWNUMBER() OVER() AS ROW_ID FROM ( select * from PLATDS.ST_ORDERINFO ) AS TMP_PAGE) TMP_PAGE WHERE ROW_ID BETWEEN ? AND ?
报错如下:Caused by: com.ibm.db2.jcc.am.SqlException: DB2 SQL Error: SQLCODE=-313, SQLSTATE=07004, SQLERRMC=null, DRIVER=4.26.14
我百度了这个错误码,好像是因为分页插件生成的sql取不到BETWEEN ? AND ?这两个参数导致的,我就想到是不是因为我前面这个配置的原因,求大神。。。。

iven123 发表于 2021-3-16 09:01

,不知道你的表结构,sql查询语句好像不对

18337045351 发表于 2021-3-16 09:02

SQL语句注意非法字符你看一下是不是那些非法字符冲突了

alan3258 发表于 2021-3-16 09:03

去掉 statementType="STATEMENT" 改成下面样子试一下
<select id="getruledo" parameterType="java.lang.String" resultType="Map">
      select * from PLATDS.ST_${name}
    </select>
如果还是不行,把整个表名当作参数传进来:
<select id="getruledo" parameterType="java.lang.String" resultType="Map">
      select * from ${tableName}
    </select>

小公主々 发表于 2021-3-16 09:04

你这语句写的,数据库是SQL SERVER吗

fen094595 发表于 2021-3-16 09:08

sql字符,非法字符。

两只小蜜蜂 发表于 2021-3-16 09:11

小公主々 发表于 2021-3-16 09:04
你这语句写的,数据库是SQL SERVER吗

db2......

两只小蜜蜂 发表于 2021-3-16 09:13

iven123 发表于 2021-3-16 09:01
,不知道你的表结构,sql查询语句好像不对

查询语句没问题。。。

澹泊明志 发表于 2021-3-16 09:22

你的pageSize和pageNum没传吗?

两只小蜜蜂 发表于 2021-3-16 09:24

澹泊明志 发表于 2021-3-16 09:22
你的pageSize和pageNum没传吗?


穿了的,问题是他好像拿不到这两个参数
页: [1] 2
查看完整版本: java mybatis PageHelper 求助