`
sb122k
  • 浏览: 66068 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

mybatis criteria.valid

阅读更多

 

 mybatis 自带的框架,使用时有问题


在测试用例中直接调用selectPage 会出现错误:
     ### Error querying database.  Cause: org.apache.ibatis.builder.BuilderException: Error evaluating expression 'criteria.valid'. Cause: org.apache.ibatis.ognl.NoSuchPropertyException: cn.com.baby.weibo.dao.ibatis.Critirias$Criteria.valid
     ### The error may exist in cn/com/baby/weibo/dao/ibatis/sqlmap/Tweet.xml
     ### The error may involve TweetMapper.selectByCritirias
     ### The error occurred while executing a query
     ### Cause: org.apache.ibatis.builder.BuilderException: Error evaluating expression 'criteria.valid'. Cause: org.apache.ibatis.ognl.NoSuchPropertyException: cn.com.baby.weibo.dao.ibatis.Critirias$Criteria.valid
          at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:8)
          at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:61)
          at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:53)
          at cn.com.baby.weibo.dao.ibatis.IbatisBaseDao.list(IbatisBaseDao.java:92)
          at cn.com.baby.weibo.dao.ibatis.IbatisTweetDao.selectByCritirias(IbatisTweetDao.java:77)
          at cn.com.baby.weibo.dao.ibatis.IbatisTweetDao.selectPage(IbatisTweetDao.java:122)
          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
          at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
          at java.lang.reflect.Method.invoke(Unknown Source)
          at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)
          at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
          at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
          at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
          at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
          at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
          at $Proxy18.selectPage(Unknown Source)
          at cn.com.baby.weibo.dao.ibatis.EntityManager.selectPage(EntityManager.java:186)
          ... 25 more
     Caused by: org.apache.ibatis.builder.BuilderException: Error evaluating expression 'criteria.valid'. Cause: org.apache.ibatis.ognl.NoSuchPropertyException: cn.com.baby.weibo.dao.ibatis.Critirias$Criteria.valid
          at org.apache.ibatis.builder.xml.dynamic.ExpressionEvaluator.evaluateBoolean(ExpressionEvaluator.java:20)
          at org.apache.ibatis.builder.xml.dynamic.IfSqlNode.apply(IfSqlNode.java:15)
          at org.apache.ibatis.builder.xml.dynamic.MixedSqlNode.apply(MixedSqlNode.java:14)
          at org.apache.ibatis.builder.xml.dynamic.ForEachSqlNode.apply(ForEachSqlNode.java:55)
          at org.apache.ibatis.builder.xml.dynamic.MixedSqlNode.apply(MixedSqlNode.java:14)
          at org.apache.ibatis.builder.xml.dynamic.TrimSqlNode.apply(TrimSqlNode.java:27)
          at org.apache.ibatis.builder.xml.dynamic.MixedSqlNode.apply(MixedSqlNode.java:14)
          at org.apache.ibatis.builder.xml.dynamic.MixedSqlNode.apply(MixedSqlNode.java:14)
          at org.apache.ibatis.builder.xml.dynamic.DynamicSqlSource.getBoundSql(DynamicSqlSource.java:22)
          at org.apache.ibatis.mapping.MappedStatement.getBoundSql(MappedStatement.java:198)
          at org.apache.ibatis.executor.BaseExecutor.createCacheKey(BaseExecutor.java:114)
          at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:83)
          at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:68)
          at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:59)
          ... 41 more
     Caused by: org.apache.ibatis.ognl.NoSuchPropertyException: cn.com.baby.weibo.dao.ibatis.Critirias$Criteria.valid
          at org.apache.ibatis.ognl.ObjectPropertyAccessor.getProperty(ObjectPropertyAccessor.java:115)
          at org.apache.ibatis.ognl.OgnlRuntime.getProperty(OgnlRuntime.java:1529)
          at org.apache.ibatis.ognl.ASTProperty.getValueBody(ASTProperty.java:84)
          at org.apache.ibatis.ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:175)
          at org.apache.ibatis.ognl.SimpleNode.getValue(SimpleNode.java:213)
          at org.apache.ibatis.ognl.ASTChain.getValueBody(ASTChain.java:107)
          at org.apache.ibatis.ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:175)
          at org.apache.ibatis.ognl.SimpleNode.getValue(SimpleNode.java:213)
          at org.apache.ibatis.ognl.Ognl.getValue(Ognl.java:314)
          at org.apache.ibatis.ognl.Ognl.getValue(Ognl.java:394)
          at org.apache.ibatis.ognl.Ognl.getValue(Ognl.java:435)
          at org.apache.ibatis.ognl.Ognl.getValue(Ognl.java:414)
          at org.apache.ibatis.builder.xml.dynamic.ExpressionEvaluator.evaluateBoolean(ExpressionEvaluator.java:15)
          ... 54 more
     
     selectPage中有两次查询调用 
     this.selectByCritirias(critirias);
     this.countByCritirias(critirias);
     debug ibatis 源码发现,ibatis内嵌的ognl,在解析表达式criteria.valid,第一次解析出来 criteria.valid 的 readmethod, returnType, 并存入缓存map,第二次直接获得map的value时,丢失了readmethod。所以出现异常
     这个异常在测试系统和正式系统中都不会出现,怀疑是jdk的bug。
     如果需要在本地测试。可在调用 selectPage 前先调用一次selectByPrimaryKey。
分享到:
评论

相关推荐

    个人博客系统(SpringBoot+Mybatis).zip

    个人博客系统(SpringBoot+Mybatis).zip个人博客系统(SpringBoot+Mybatis).zip个人博客系统(SpringBoot+Mybatis).zip个人博客系统(SpringBoot+Mybatis).zip个人博客系统(SpringBoot+Mybatis).zip个人博客...

    中秋博饼游戏(Swing+Spring+MyBatis).zip

    中秋博饼游戏(Swing+Spring+MyBatis).zip中秋博饼游戏(Swing+Spring+MyBatis).zip 中秋博饼游戏(Swing+Spring+MyBatis).zip中秋博饼游戏(Swing+Spring+MyBatis).zip 中秋博饼游戏(Swing+Spring+MyBatis).zip中秋博饼...

    简易的中秋博饼游戏(Swing+Spring+MyBatis).zip

    简易的中秋博饼游戏(Swing+Spring+MyBatis).zip 简易的中秋博饼游戏(Swing+Spring+MyBatis).zip 简易的中秋博饼游戏(Swing+Spring+MyBatis).zip 简易的中秋博饼游戏(Swing+Spring+MyBatis).zip 简易的中秋博饼游戏...

    mybatis 3.x源码深度解析与最佳实践.html

    mybatis 3.x源码深度解析与最佳实践.html

    myBatis3.2.2.jar

    myBatis3.2.2.jar

    MyBatis资料.zip

    MyBatis是一个强大的Java持久层框架,它简化了数据库与应用程序之间的交互,使得开发者能够更加专注于SQL和业务逻辑的编写,而无需关心底层的JDBC代码。MyBatis的资料库通常包含各种必要的组件和文档,以帮助开发者...

    mybatis3.x源码深度解析与最佳实践.pdf

    MyBatis 3.x 源码深度解析与最佳实践 MyBatis 是当前最流行的 Java 持久层框架之一,其通过 XML 配置的方式消除了绝大部分 JDBC 重复代码以及参数的设置,结果集的映射。为了更好地学习和理解 MyBatis 背后的设计...

    mybatisx.zip

    这个压缩包文件“mybatisx.zip”包含了多个版本的MybatisX插件,包括MybatisX-1.4.16.zip、MybatisX-1.4.8.zip、MybatisX-1.4.6.zip以及MybatisX-1.1.2.zip。这些版本的差异可能体现在功能增强、性能优化或者修复...

    mybatis3.x 整合Spring3.x jar包

    该jar包为最新的适配mybatis3.2.X及以上的版本。同时向下兼容mybatis的版本。mybatis整合spring jar包 mybatis-spring-1.2.3.jar

    free-idea-mybatis2020.9.15.rar

    【标题】"free-idea-mybatis2020.9.15.rar" 提供的资源是关于MyBatis框架的一个特定版本,结合了IntelliJ IDEA这一流行的Java开发集成环境。这个压缩包很可能是包含了特定日期(2020年9月15日)的MyBatis插件或者与...

    mybatis3.5.7.zip

    MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 ...

    MyBatis笔记.md

    MyBatis笔记.md

    free-idea-mybatis2019.12.18.zip

    free-idea-mybatis is an enchange plugin for idea to supoort mybatis,here is the main functions: generate mapper xml files navigate from the code to mapper and from the mapper back to code auto code...

    mybatis-3-config/mapper.dtd 解决mybatis头文件报错

    >Window->prefenrence->XML->XML Catalog->User Specifiled Entreis->Add->Location(此处是你放dtd文件的位置例如:‪D:\mybatis\mybatis-3-config.dtd)->Key(如果更改config,此处应该是:-//mybatis.org//DTD ...

    Java校园组团平台使用SpringBoot+MyBatis框架.zip

    Java校园组团平台使用SpringBoot+MyBatis框架.zipJava校园组团平台使用SpringBoot+MyBatis框架.zipJava校园组团平台使用SpringBoot+MyBatis框架.zip

    MyBatis 3.1.1.chm

    MyBatis 3.1.1.chm,mybatis开发帮组文档

    Java智慧校园之家长子系统使用SpringBoot+MyBatis框架.zip

    Java智慧校园之家长子系统使用SpringBoot+MyBatis框架.zipJava智慧校园之家长子系统使用SpringBoot+MyBatis框架.zipJava智慧校园之家长子系统使用SpringBoot+MyBatis框架.zip

    11.mybatis 2.zip

    11.mybatis 2.zip

    Mybatis入门.md

    Mybatis入门.md

    mybatis03.rar

    《MyBatis进阶探索——基于mybatis03.rar的学习指南》 MyBatis作为一款优秀的持久层框架,深受广大Java开发者的喜爱。它通过提供简单灵活的SQL映射机制,将Java对象与数据库表之间的操作变得易于理解和控制。本文将...

Global site tag (gtag.js) - Google Analytics