heiyingjianshi 2013-12-10 02:57 采纳率: 0%
浏览 3982

mybatis拦截器分页问题。intercept有时候不执行

我在SSM工程中使用mybatis拦截器做分页,但是拦截器的intercept有时候执行有时候不执行,不知道为什么,程序员没有没有经验呢?谢谢赐教

代码:
@Intercepts({@Signature(type = StatementHandler.class, method = "prepare", args = { Connection.class })})
public class PageInterceptor implements Interceptor {

private static String sqlId = "";

private static String dialect = "";

public Object intercept(Invocation inv) throws Throwable {
System.out.println("到了");
RoutingStatementHandler handler = (RoutingStatementHandler) inv.getTarget();
StatementHandler delegate = (StatementHandler)ReflectionUtils.getFieldValue(handler, "delegate");
MappedStatement mappedStatement = (MappedStatement) ReflectionUtils.getFieldValue(delegate, "mappedStatement");

if(mappedStatement.getId().matches(sqlId)) { //只拦截id包含pages的SQL
BoundSql bound = delegate.getBoundSql();

//获得当前绑定Sql的参数对象
Object object = bound.getParameterObject();
if(object == null) {
return inv.proceed();
}
if(object instanceof PageEntity<?>) {
PageEntity<?> page = (PageEntity<?>)object;
String sql = bound.getSql();

String pageSql = getPageSql(sql, page);
ReflectionUtils.setFieldValue(bound, "sql", pageSql);
}
}
return inv.proceed();
}

public String getPageSql(String sql, PageEntity<?> page) {
//此处省略SQL拼接代码
return pageSql.toString();
}

public Object plugin(Object arg0) {
return Plugin.wrap(arg0, this);
}

public void setProperties(Properties property) {
sqlId = property.getProperty("sqlId"); //".*Pages*.*"
dialect = property.getProperty("dialect"); //"oracle"
}

}

配置:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE configuration PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN" "http://ibatis.apache.org/dtd/ibatis-3-config.dtd">




















<mappers> 
    <mapper resource="com/cifpay/user/entity/User.sqlMap.xml" /> 
    <mapper resource="com/cifpay/role/entity/Role.sqlMap.xml" /> 
    <mapper resource="com/cifpay/menu/entity/Menu.sqlMap.xml"/> 
    <mapper resource="com/cifpay/role/entity/RoleMenuMap.sqlMap.xml"/> 
    <mapper resource="com/cifpay/role/entity/UserRoleMap.sqlMap.xml"/> 

 </mappers> 
  • 写回答

1条回答 默认 最新

  • 龙龙119 2021-04-11 14:52
    关注

    没注入该类吧

    评论

报告相同问题?

悬赏问题

  • ¥15 数学的三元一次方程求解
  • ¥20 iqoo11 如何下载安装工程模式
  • ¥15 本题的答案是不是有问题
  • ¥15 关于#r语言#的问题:(svydesign)为什么在一个大的数据集中抽取了一个小数据集
  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 蓝桥杯单片机第十三届第一场,整点继电器吸合,5s后断开出现了问题