最近项目中使用了mybatis plus,今天在开发一个分页功能的时候,项目运行时报错:
Caused by: java.sql.SQLException: sql injection violation, syntax error: syntax error, error in :'ESC; LIMIT ?,?', expect LIMIT, actual LIMIT pos 621, line 23, column 29, token LIMIT
mapper中的方法声明:
IPage<XueXingZuDuiZhaoMaVo> selectWithMingCheng(IPage<Vo> pageData, @Param("vo") Vo vo);
mapper.xml文件中的SQL语句:
ORDER BY
XU_HAO DESC;
报错的SQL语句:
ORDER BY
XU_HAO DESC; LIMIT ?,?
可以看到,mybatis plus 在进行分页查询时会自动给自定义的SQL语句加上LIMIT关键字进行查询,由于自定义的SQL语句有分号,导致mybatis plus添加LIMIT 后不能组成一个有效的SQL语句。
解决方法:去掉自定义SQL语句末尾的分号。