ibatis-xx.xml出现如下配置:
- <selectid="selectAllUsers"resultClass="User"parameterClass="java.lang.String">
- select * from t_user
- where
- 1=1
- <dynamic>
- <isNotEmptyprepend="and"property="userName">
- instr(name,#userName#)>0
- </isNotEmpty>
- </dynamic>
- </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';
对比如下配置:
- <selectid="selectAllUsers"resultClass="User"parameterClass="User">
- select * from t_user
- where
- 1=1
- <dynamic>
- <isNotEmptyprepend="and"property="userName">
- instr(name,#userName#)>0
- </isNotEmpty>
- </dynamic>
- </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即可):
- <selectid="selectAllUsers"resultClass="User"parameterClass="java.lang.String">
- select * from t_user
- where
- 1=1
- <dynamic>
- <isNotEmptyprepend="and"property="value">
- instr(name,#userName#)>0
- </isNotEmpty>
- </dynamic>
- </select>
相关推荐
Caused by: java.net.UnknownHostException: openapi.alipay.com
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 ...
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`这样的异常。这个异常通常表示在执行数据库查询操作时遇到了问题。本篇将详细分析这个问题并提供解决方法。 ### 问题概述 ...
根据提供的文件信息,本书《Manning iBATIS in Action Jan. 2007 eBook-BBL》主要介绍了iBATIS框架的基本概念、安装配置方法、核心功能及其在实际项目中的应用。下面将针对该书籍中提及的主要知识点进行详细阐述。 ...
在Java开发中,Maven和iBatis是两个非常重要的工具。Maven是一个项目管理和综合工具,它帮助开发者管理依赖、构建项目,并提供了一种标准化的项目结构。而iBatis则是一个SQL映射框架,它将SQL语句与Java代码分离,...
import static org.apache.ibatis.reflection.ExceptionUtil.unwrapThrowable; import static org.mybatis.spring.SqlSessionUtils.closeSqlSession; import static org.mybatis.spring.SqlSessionUtils....
// 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....
- 在SQL映射文件中,定义`<select>`标签的`parameterClass`属性为`java.lang.String`。 - 直接在SQL语句中使用传入的字符串。 **示例代码:** ```xml <select id="checkLogin" parameterClass="java.lang.String" ...
PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd"> <sqlMap namespace="Account"> <typeAlias alias="Account" type="Account"/> ...
<select id="getDynamicTable" resultClass="java.util.HashMap" remapResults="true" parameterClass="java.lang.Integer"> select t.* from some_table t where t.status = #{status} ``` 这里需要注意的是,`#...
<parameter property="permissionType" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/> <parameter property="userId" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/> <parameter ...
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,...
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"> <property name="configLocation"> <value>classpath:SqlMapConfig.xml </property> <bean id="dao" class="org....
其中,iBATIS(现在称为MyBatis)是一个流行的选择,它允许程序员将SQL查询直接集成到Java代码中,提高了灵活性和性能。本篇文章主要探讨的是iBATIS中的一个高级特性——继承映射,通过`Discriminator`列来实现类的...
在IBatis中,ResultMapping的名称需要加上namespace,例如:<resultMap id="xxxMap" class="xxx"> <result property="abc" resultMap="ns.yyyMap"/> 。 3. IBatis的配置错误 在配置IBatis时,可能会出现各种错误。...
<select id="getAccount" parameterClass="java.lang.String" resultClass="example.Account"> select * from Account where username = #value# <insert id="createAccount" parameterClass="example.Account...
iBATIS,全称为“Infrastructure for Binding Applications To SQL Maps”,是一个优秀的开源持久层框架,它允许Java开发者将SQL语句与Java代码分离,提供了一种简单但强大的在Java应用中映射SQL和结果集的方式。...