Mybatis使用pagehelper插件分页报错

2020-07-26 08:55:46.794 ERROR 2468 --- [nio-8085-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: java.lang.reflect.UndeclaredThrowableException
### The error may exist in file []
### The error may involve com.commerce.mall.portal.dao.HeadlineArticleDao.selectAll
### The error occurred while executing a query
### SQL: SELECT count(0) FROM ``
### Cause: java.lang.reflect.UndeclaredThrowableException] with root cause

net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: "LIMIT" "LIMIT"
    at line 2, column 35.

Was expecting:

    <EOF>

	at net.sf.jsqlparser.parser.CCJSqlParser.generateParseException(CCJSqlParser.java:20872) ~[jsqlparser-2.0.jar:na]
	at net.sf.jsqlparser.parser.CCJSqlParser.jj_consume_token(CCJSqlParser.java:20722) ~[jsqlparser-2.0.jar:na]
	at net.sf.jsqlparser.parser.CCJSqlParser.Statement(CCJSqlParser.java:80) ~[jsqlparser-2.0.jar:na]
	at net.sf.jsqlparser.parser.CCJSqlParserUtil.parse(CCJSqlParserUtil.java:36) ~[jsqlparser-2.0.jar:na]
	at io.github.yidasanqian.dynamicadddate.AddDateInterceptor.intercept(AddDateInterceptor.java:68) ~[dynamic-add-date-1.1.0.jar:na]
	at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:61) ~[mybatis-3.4.6.jar:3.4.6]
	at com.sun.proxy.$Proxy233.prepare(Unknown Source) ~[na:na]
	at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:85) ~[mybatis-3.4.6.jar:3.4.6]
	at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:62) ~[mybatis-3.4.6.jar:3.4.6]
	at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:326) ~[mybatis-3.4.6.jar:3.4.6]
	at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156) ~[mybatis-3.4.6.jar:3.4.6]
	at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109) ~[mybatis-3.4.6.jar:3.4.6]
	at com.github.pagehelper.util.ExecutorUtil.pageQuery(ExecutorUtil.java:177) ~[pagehelper-5.1.11.jar:na]
	at com.github.pagehelper.PageInterceptor.intercept(PageInterceptor.java:104) ~[pagehelper-5.1.11.jar:na]
	at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:61) ~[mybatis-3.4.6.jar:3.4.6]
	at com.sun.proxy.$Proxy231.query(Unknown Source) ~[na:na]
	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:148) ~[mybatis-3.4.6.jar:3.4.6]
	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:141) ~[mybatis-3.4.6.jar:3.4.6]

报的这个奇怪的错误找了很久,后来才发现是因为SQL语句加了分号,导致page插件没发动态凭借limit、offset参数
解决方案:检查你的sql语句,去掉分号~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis 是一个优秀的持久层框架,而 PageHelper 是一个用于 MyBatis 的分页件。使用 PageHelper 可以方便地实现分页功能。下面是使用 PageHelper 进行分页的步骤: 1. 添加依赖:在项目的 `pom.xml` 文件中添加以下依赖: ```xml <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>latest-version</version> </dependency> ``` 可以在 Maven 仓库中找到最新版本的 PageHelper。 2. 配置 PageHelper:在 MyBatis 的配置文件中添加以下配置项: ```xml <plugins> <plugin interceptor="com.github.pagehelper.PageInterceptor"> <!-- 可选:设置数据库方言,用于支持不同数据库的分页 --> <property name="dialect" value="mysql"/> <!-- 可选:设置为 true 启用合理化查询,开启后,如果 pageSize=0 或者 PageMethod 的 `count` 参数为 true,则会查询总数 --> <property name="reasonable" value="true"/> </plugin> </plugins> ``` 注意:根据你所使用的数据库类型,需要将 `dialect` 属性配置为相应的数据库方言。 3. 使用 PageHelper 进行分页:在需要进行分页的查询方法中,使用 PageHelper 的静态方法来设置分页参数,例如: ```java import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; // ... // 设置分页参数,pageNum 表示当前页数,pageSize 表示每页显示的记录数 PageHelper.startPage(pageNum, pageSize); // 执行查询 List<MyEntity> resultList = myEntityMapper.selectByExample(example); // 封装查询结果,并返回给前端 PageInfo<MyEntity> pageInfo = new PageInfo<>(resultList); return pageInfo; ``` 这样就完成了使用 PageHelper 进行分页的配置和使用PageHelper 会自动在查询语句后面添加分页的 SQL 语句,根据传入的分页参数进行数据查询和结果封装。返回的 `PageInfo` 对象可以用于获取分页相关的信息,如总记录数、总页数等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值