标签:intercepts

PageHelper不支持STATEMENT非预编译的SQL

发表于2年前(Apr 18, 2016 10:09:05 AM)  阅读 555  评论 0

分类: Java

标签: mybatis 分页 PageHelper statementType STATEMENT 预编译 非预编译 intercepts 拦截器 动态sql 动态表名 动态字段名

PageHelper是一个很方便的mybatis的分页组件,如果你正在使用mybatis,建议尝试使用PageHelper进行分页。PageHelper是使用mybatis的拦截器intercepts实现分页操作的。

但PageHelper并不支持STATEMENT非预编译的SQL的分页,笔者调试时观察了一下,应该是由于SQL里面的分页参数使用的?,PageHelper修改SQL的时候无法将参数正确设置,所以导致了语法错误,mybatis使用的很少,笔者也不知道这个问题是不是一个问题,能否解决,如果有读者也遇到该问题,请暂时想别的办法吧。

其实笔者之所以使用STATEMENT非预编译的SQL,是想实现一个通用的Mapper,动态传入表名和字段名,查看网上资料都表明需要设置statementType="STATEMENT",所以出现了上面的问题,但后来笔者实验发现,动态sql并不需要强制设置statementType="STATEMENT",在默认预编译环境下运行,笔者测试暂时未发现有什么问题,笔者自己

......