`
wanxiaotao12
  • 浏览: 472293 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Ibatis:There is no READABLE property named 'userName' in class 'java.lang.String

 
阅读更多

ibatis-xx.xml出现如下配置:

 

 

  1. <selectid="selectAllUsers"resultClass="User"parameterClass="java.lang.String">
  2. select * from t_user
  3. where
  4. 1=1
  5. <dynamic>
  6. <isNotEmptyprepend="and"property="userName">
  7. instr(name,#userName#)>0
  8. </isNotEmpty>
  9. </dynamic>
  10. </select>
<select id="selectAllUsers" resultClass="User" parameterClass="java.lang.String">
		select * from t_user
		where
			1=1
		<dynamic>
			<isNotEmpty prepend="and" property="userName">
				  instr(name,#userName#)>0
			</isNotEmpty>
		</dynamic>
</select>

 

 

此时执行此模糊查询,出现如下异常:exception: com.ibatis.common.beans.ProbeException: There is no READABLE property named 'userName' in class 'java.lang.String';

 

对比如下配置:

 

  1. <selectid="selectAllUsers"resultClass="User"parameterClass="User">
  2. select * from t_user
  3. where
  4. 1=1
  5. <dynamic>
  6. <isNotEmptyprepend="and"property="userName">
  7. instr(name,#userName#)>0
  8. </isNotEmpty>
  9. </dynamic>
  10. </select>
<select id="selectAllUsers" resultClass="User" parameterClass="User">
		select * from t_user
		where
			1=1
		<dynamic>
			<isNotEmpty prepend="and" property="userName">
				 instr(name,#userName#)>0
			</isNotEmpty>
		</dynamic>
</select>


上述配置是能正常执行查询的,故猜测ibatis在解析xml成sql时,会寻找parameterClass的getter property方法,第二种case中,userName property正是parameterClass User的属性,故能正常解析为sql,进而执行查询操作,以此类推,第一种case中,parameterClass 是String类,而property是userName,String寻找不到userName的getter方法,故会出现上述红色处的异常信息。

 

 

以上纯属个人臆想,如有深知个中原理的麻烦不吝赐教。

 

注:如果parameterClass确实只想设置为String,而不是一个User对象,那么也可以采用下面的配置(将property省去或设置为value即可)

 

  1. <selectid="selectAllUsers"resultClass="User"parameterClass="java.lang.String">
  2. select * from t_user
  3. where
  4. 1=1
  5. <dynamic>
  6. <isNotEmptyprepend="and"property="value">
  7. instr(name,#userName#)>0
  8. </isNotEmpty>
  9. </dynamic>
  10. </select>
分享到:
评论

相关推荐

    Caused by: java.net.UnknownHostException: openapi.alipay.com

    Caused by: java.net.UnknownHostException: openapi.alipay.com

    asm5.0.jar

    nested exception is org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: java.lang.IllegalStateException: Cannot enable lazy loading because CGLIB is not ...

    iBATIS内置别名列表

    1. **string**:`java.lang.String` 2. **byte**:`java.lang.Byte` 3. **long**:`java.lang.Long` 4. **short**:`java.lang.Short` 5. **int/integer**:`java.lang.Integer` - `int` 和 `integer` 是同义词,...

    Mybatis报错: org.apache.ibatis.exceptions.PersistenceException解决办法

    在使用Mybatis框架时,你可能会遇到`org.apache.ibatis.exceptions.PersistenceException`这样的异常。这个异常通常表示在执行数据库查询操作时遇到了问题。本篇将详细分析这个问题并提供解决方法。 ### 问题概述 ...

    Manning.iBATIS.in.Action.Jan.2007.eBook-BBL.pdf

    根据提供的文件信息,本书《Manning iBATIS in Action Jan. 2007 eBook-BBL》主要介绍了iBATIS框架的基本概念、安装配置方法、核心功能及其在实际项目中的应用。下面将针对该书籍中提及的主要知识点进行详细阐述。 ...

    maven整合ibatis的简单例子

    在Java开发中,Maven和iBatis是两个非常重要的工具。Maven是一个项目管理和综合工具,它帮助开发者管理依赖、构建项目,并提供了一种标准化的项目结构。而iBatis则是一个SQL映射框架,它将SQL语句与Java代码分离,...

    Spring3 整合MyBatis3 配置多数据源动态选择SqlSessionFactory详细教程

    import static org.apache.ibatis.reflection.ExceptionUtil.unwrapThrowable; import static org.mybatis.spring.SqlSessionUtils.closeSqlSession; import static org.mybatis.spring.SqlSessionUtils....

    java业务层框架开发ibatis(java源码)

    // JBuilder API Decompiler stub source generated from class file // 2010-1-15 // -- implementation of methods is not available package com.ibatis.common.jdbc; // Imports import java.lang.reflect....

    ibatis的多参数查询.doc

    - 在SQL映射文件中,定义`&lt;select&gt;`标签的`parameterClass`属性为`java.lang.String`。 - 直接在SQL语句中使用传入的字符串。 **示例代码:** ```xml &lt;select id="checkLogin" parameterClass="java.lang.String" ...

    iBatis-设置缓存模式-Java源码(下载)

    PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd"&gt; &lt;sqlMap namespace="Account"&gt; &lt;typeAlias alias="Account" type="Account"/&gt; ...

    ibatis 用HashMap解决resultClass映射

    &lt;select id="getDynamicTable" resultClass="java.util.HashMap" remapResults="true" parameterClass="java.lang.Integer"&gt; select t.* from some_table t where t.status = #{status} ``` 这里需要注意的是,`#...

    Ibatis调用存储过程调用存储过程

    &lt;parameter property="permissionType" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/&gt; &lt;parameter property="userId" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/&gt; &lt;parameter ...

    Mybatis 中 Oracle 的拼接模糊查询及用法详解

    nested exception is `org.apache.ibatis.type.TypeException`:Could not set parameters for mapping:ParameterMapping{property='userName', mode=IN, javaType=class java.lang.String, jdbcType=null,...

    Spring高版本对ibatis的支持

    &lt;bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"&gt; &lt;property name="configLocation"&gt; &lt;value&gt;classpath:SqlMapConfig.xml &lt;/property&gt; &lt;bean id="dao" class="org....

    IBatis: Discriminator Column Example – Inheritance Mapping(Ibatis中的继承映射)

    其中,iBATIS(现在称为MyBatis)是一个流行的选择,它允许程序员将SQL查询直接集成到Java代码中,提高了灵活性和性能。本篇文章主要探讨的是iBATIS中的一个高级特性——继承映射,通过`Discriminator`列来实现类的...

    记一次Ibatis的意外发生.docx

    在IBatis中,ResultMapping的名称需要加上namespace,例如:&lt;resultMap id="xxxMap" class="xxx"&gt; &lt;result property="abc" resultMap="ns.yyyMap"/&gt; 。 3. IBatis的配置错误 在配置IBatis时,可能会出现各种错误。...

    iBatis简明教程及快速入门

    &lt;select id="getAccount" parameterClass="java.lang.String" resultClass="example.Account"&gt; select * from Account where username = #value# &lt;insert id="createAccount" parameterClass="example.Account...

    ibatis-2.3.4.726.jar,ibatis-2.3.0.677.jar,ibatis-2.3.3.720.jar下载

    iBATIS,全称为“Infrastructure for Binding Applications To SQL Maps”,是一个优秀的开源持久层框架,它允许Java开发者将SQL语句与Java代码分离,提供了一种简单但强大的在Java应用中映射SQL和结果集的方式。...

Global site tag (gtag.js) - Google Analytics