加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_开封站长网 (http://www.0378zz.com/)- 科技、AI行业应用、媒体智能、低代码、办公协同!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

警惕,MyBatis的size()方法竟然有坑!

发布时间:2019-09-19 10:41:01 所属栏目:MySql教程 来源:http://h5ip.cn/aJgJ Mybatis是一个
导读:副标题#e# 来源:http://h5ip.cn/aJgJ Mybatis是一个开源的轻量级半自动化ORM框架,使得面向对象应用程序与关系数据库的映射变得更加容易。MyBatis使用xml描述符或注解将对象与存储过程或SQL语句相结合。Mybatis最大优点是应用程序与Sql进行解耦,sql语句是

异常信息表明OgnlRuntime类不能够访问java.util.Collections的私有成员SingletonList。查看源代码发现能够抛出MethodFailedException异常可以锁定在invokeMethod方法内部。

  1. public static Object callAppropriateMethod(OgnlContext context, Object source, Object target, String methodName, String propertyName, List methods, Object[] args) throws MethodFailedException { 
  2.         Object reason = null; 
  3.         Object[] actualArgs = objectArrayPool.create(args.length); 
  4.  
  5.         try { 
  6.             Method e = getAppropriateMethod(context, source, target, methodName, propertyName, methods, args, actualArgs); 
  7.             if(e == null || !isMethodAccessible(context, source, e, propertyName)) { 
  8.                 StringBuffer buffer = new StringBuffer(); 
  9.                 if(args != null) { 
  10.                     int i = 0; 
  11.  
  12.                     for(int ilast = args.length - 1; i <= ilast; ++i) { 
  13.                         Object arg = args[i]; 
  14.                         buffer.append(arg == null?NULL_STRING:arg.getClass().getName()); 
  15.                         if(i < ilast) { 
  16.                             buffer.append(", "); 
  17.                         } 
  18.                     } 
  19.                 } 
  20.  
  21.                 throw new NoSuchMethodException(methodName + "(" + buffer + ")"); 
  22.             } 
  23.  
  24.             Object var14 = invokeMethod(target, e, actualArgs); 
  25.             return var14; 
  26.         } catch (NoSuchMethodException var21) { 
  27.             reason = var21; 
  28.         } catch (IllegalAccessException var22) { 
  29.             reason = var22; 
  30.         } catch (InvocationTargetException var23) { 
  31.             reason = var23.getTargetException(); 
  32.         } finally { 
  33.             objectArrayPool.recycle(actualArgs); 
  34.         } 
  35.  
  36.         throw new MethodFailedException(source, methodName, (Throwable)reason); 
  37.     } 

(编辑:开发网_开封站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读