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 ?这两个参数导致的,我就想到是不是因为我前面这个配置的原因,求大神。。。。 ,不知道你的表结构,sql查询语句好像不对 SQL语句注意非法字符你看一下是不是那些非法字符冲突了 去掉 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> 你这语句写的,数据库是SQL SERVER吗
sql字符,非法字符。 小公主々 发表于 2021-3-16 09:04
你这语句写的,数据库是SQL SERVER吗
db2...... iven123 发表于 2021-3-16 09:01
,不知道你的表结构,sql查询语句好像不对
查询语句没问题。。。 你的pageSize和pageNum没传吗? 澹泊明志 发表于 2021-3-16 09:22
你的pageSize和pageNum没传吗?
穿了的,问题是他好像拿不到这两个参数
页:
[1]
2