国内最专业的IT技术学习网

UI设计

当前位置:主页 > UI设计 >

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

发布时间:2019/09/18标签:   异常    点击量:

原标题:警惕,MyBatis的size()方法竟然有坑!
警惕,MyBatis的size()方法竟然有坑!起源:http://h5ip.cn/aJgJMybatis是一个开源的轻量级半主动化ORM框架,使得面向工具利用顺序与关联数据库的映照变得愈加轻易。MyBatis应用xml描写符或注解将工具与存储进程或SQL语句相联合。Mybatis最大长处是利用顺序与Sql停止解耦,sql语句是写在Xml Mapper文件中。OGNL表白式在Mybatis傍边利用十分普遍,其表白式的机动性使得静态Sql功效的十分强盛。OGNL是Object-Graph Navigation Language的缩写,代表工具图导航言语。OGNL是一种EL表白式言语,用于设置和猎取Java工具的属性,而且能够对列表停止投影抉择以及履行lambda表白式。Ognl类供给了很多轻便方式用于履行表白式的。Struts2公布的每个版本都市呈现的新的高危可履行破绽也是由于它应用了机动的OGNL表白式。公司后端采纳Mybatis作为数据拜访层,所应用版本为3.2.3。线上情况营业体系在运转进程中呈现了一个使人迷惑的异样, 该异样时而呈现时而不呈现,结构种种OGNL表白式为空等特别情形均不会重现该异样。详细异样客栈信息以下:###Errorqueryingdatabase.Cause:org.apache.ibatis.builder.BuilderException:Errorevaluatingexpression'list!=nullandlist.size()>0'.Cause:org.apache.ibatis.ognl.MethodFailedException:Method"size"failedforobject[1][java.lang.IllegalAccessException:Classorg.apache.ibatis.ognl.OgnlRuntimecannotaccessamemberofclassjava.util.Collections$SingletonListwithmodifiers"public"]###Cause:org.apache.ibatis.builder.BuilderException:Errorevaluatingexpression'list!=nullandlist.size()>0'.Cause:org.apache.ibatis.ognl.MethodFailedException:Method"size"failedforobject[1][java.lang.IllegalAccessException:Classorg.apache.ibatis.ognl.OgnlRuntimecannotaccessamemberofclassjava.util.Collections$SingletonListwithmodifiers"public"]atorg.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:23)org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:107)atorg.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:98)atcn.com.shaobingmm.MybatisBugTest$2.run(MybatisBugTest.java:88)atjava.lang.Thread.run(Thread.java:745)Causedby:org.apache.ibatis.builder.BuilderException:Errorevaluatingexpression'list!=nullandlist.size()>0'.Cause:org.apache.ibatis.ognl.MethodFailedException:Method"size"failedforobject[1][java.lang.IllegalAccessException:Classorg.apache.ibatis.ognl.OgnlRuntimecannotaccessamemberofclassjava.util.Collections$SingletonListwithmodifiers"public"]atorg.apache.ibatis.scripting.xmltags.OgnlCache.getValue(OgnlCache.javaat:47)atorg.apache.ibatis.scripting.xmltags.ExpressionEvaluator.evaluateBoolean(ExpressionEvaluator.java:29)atorg.apache.ibatis.scripting.xmltags.IfSqlNode.apply(IfSqlNode.java:30)atorg.apache.ibatis.scripting.xmltags.MixedSqlNode.apply(MixedSqlNode.java:29)atorg.apache.ibatis.scripting.xmltags.TrimSqlNode.apply(TrimSqlNode.java:51)atorg.apache.ibatis.scripting.xmltags.MixedSqlNode.apply(MixedSqlNode.java:29)atorg.apache.ibatis.scripting.xmltags.DynamicSqlSource.getBoundSql(DynamicSqlSource.java:37)atorg.apache.ibatis.mapping.MappedStatement.getBoundSql(MappedStatement.java:275)atorg.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:79)atorg.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:104)...3moreCausedby:org.apache.ibatis.ognl.MethodFailedException:Method"size"failedforobject[1][java.lang.IllegalAccessException:Classorg.apache.ibatis.ognl.OgnlRuntimecannotaccessamemberofclassjava.util.Collections$SingletonListwithmodifiers"public"]atorg.apache.ibatis.ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:837)atorg.apache.ibatis.ognl.ObjectMethodAccessor.callMethod(ObjectMethodAccessor.java:61)atorg.apache.ibatis.ognl.OgnlRuntime.callMethod(OgnlRuntime.java:860)atorg.apache.ibatis.ognl.ASTMethod.getValueBody(ASTMethod.java:73)atorg.apache.ibatis.ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:170)atorg.apache.ibatis.ognl.SimpleNode.getValue(SimpleNode.java:210)atorg.apache.ibatis.ognl.ASTChain.getValueBody(ASTChain.java:109)atorg.apache.ibatis.ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:170)atorg.apache.ibatis.ognl.SimpleNode.getValue(SimpleNode.java:210)atorg.apache.ibatis.ognl.ASTGreater.getValueBody(ASTGreater.java:49)atorg.apache.ibatis.ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:170)atorg.apache.ibatis.ognl.SimpleNode.getValue(SimpleNode.java:210)atorg.apache.ibatis.ognl.ASTAnd.getValueBody(ASTAnd.java:56)atorg.apache.ibatis.ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:170)atorg.apache.ibatis.ognl.SimpleNode.getValue(SimpleNode.java:210)atorg.apache.ibatis.ognl.Ognl.getValue(Ognl.java:333)atorg.apache.ibatis.ognl.Ognl.getValue(Ognl.java:413)atorg.apache.ibatis.ognl.Ognl.getValue(Ognl.java:395)atorg.apache.ibatis.scripting.xmltags.OgnlCache.getValue(OgnlCache.java:45)...12more

上一篇:常用消息中间件17个维度全方位对比

下一篇:没有了

返回
版权信息Copyright © 银河官网 版权所有    ICP备案编号:鲁ICP备09013610号