1. 程式人生 > 其它 >There is no getter for property named 'roleName' in 'class java.lang.String'

There is no getter for property named 'roleName' in 'class java.lang.String'

在mybatis中使用單個字串型別引數查詢或多個字串型別的引數查詢,需要為引數繫結名稱。

錯誤示例:

 1 "C:\Program Files\Java\jdk1.8.0_91\bin\java.exe" -javaagent:D:\ruanjian\softwareInstall\TechnicalSoftware\idea\lib\idea_rt.jar=59620:D:\ruanjian\softwareInstall\TechnicalSoftware\idea\bin -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_91\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\rt.jar;F:\workspace\test\testMybatis\mybatisTest\target\classes;D:\ruanjian\softwareInstall\TechnicalSoftware\repository\lib\org\mybatis\mybatis\3.3.0\mybatis-3.3.0.jar;D:\ruanjian\softwareInstall\TechnicalSoftware\repository\lib\mysql\mysql-connector-java\8.0.16\mysql-connector-java-8.0.16.jar;D:\ruanjian\softwareInstall\TechnicalSoftware\repository\lib\com\google\protobuf\protobuf-java\3.6.1\protobuf-java-3.6.1.jar;D:\ruanjian\softwareInstall\TechnicalSoftware\repository\lib\log4j\log4j\1.2.17\log4j-1.2.17.jar;D:\ruanjian\softwareInstall\TechnicalSoftware\repository\lib\org\slf4j\slf4j-api\1.7.30\slf4j-api-1.7.30.jar;D:\ruanjian\softwareInstall\TechnicalSoftware\repository\lib\org\slf4j\slf4j-log4j12\1.7.7\slf4j-log4j12-1.7.7.jar" com.lenovo.MybatisExample
2 DEBUG 2022-03-11 14:19:45,882 org.apache.ibatis.logging.LogFactory: Logging initialized using 'class org.apache.ibatis.logging.slf4j.Slf4jImpl' adapter. 3 DEBUG 2022-03-11 14:19:46,135 org.apache.ibatis.datasource.pooled.PooledDataSource: PooledDataSource forcefully closed/removed all connections. 4
DEBUG 2022-03-11 14:19:46,138 org.apache.ibatis.datasource.pooled.PooledDataSource: PooledDataSource forcefully closed/removed all connections. 5 DEBUG 2022-03-11 14:19:46,139 org.apache.ibatis.datasource.pooled.PooledDataSource: PooledDataSource forcefully closed/removed all connections. 6 DEBUG 2022-03-11 14:19:46,139 org.apache.ibatis.datasource.pooled.PooledDataSource: PooledDataSource forcefully closed/removed all connections.
7 Exception in thread "main" org.apache.ibatis.exceptions.PersistenceException: 8 ### Error querying database. Cause: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'roleName' in 'class java.lang.String' 9 ### Cause: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'roleName' in 'class java.lang.String' 10 at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30) 11 at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:122) 12 at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:113) 13 at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:73) 14 at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:69) 15 at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:53) 16 at com.sun.proxy.$Proxy0.findRole(Unknown Source) 17 at com.lenovo.MybatisExample.main(MybatisExample.java:16) 18 Caused by: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'roleName' in 'class java.lang.String' 19 at org.apache.ibatis.reflection.Reflector.getGetInvoker(Reflector.java:381) 20 at org.apache.ibatis.reflection.MetaClass.getGetInvoker(MetaClass.java:164) 21 at org.apache.ibatis.reflection.wrapper.BeanWrapper.getBeanProperty(BeanWrapper.java:162) 22 at org.apache.ibatis.reflection.wrapper.BeanWrapper.get(BeanWrapper.java:49) 23 at org.apache.ibatis.reflection.MetaObject.getValue(MetaObject.java:122) 24 at org.apache.ibatis.scripting.xmltags.DynamicContext$ContextMap.get(DynamicContext.java:94) 25 at org.apache.ibatis.scripting.xmltags.DynamicContext$ContextAccessor.getProperty(DynamicContext.java:108) 26 at org.apache.ibatis.ognl.OgnlRuntime.getProperty(OgnlRuntime.java:2434) 27 at org.apache.ibatis.ognl.ASTProperty.getValueBody(ASTProperty.java:114) 28 at org.apache.ibatis.ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212) 29 at org.apache.ibatis.ognl.SimpleNode.getValue(SimpleNode.java:258) 30 at org.apache.ibatis.ognl.ASTNotEq.getValueBody(ASTNotEq.java:50) 31 at org.apache.ibatis.ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212) 32 at org.apache.ibatis.ognl.SimpleNode.getValue(SimpleNode.java:258) 33 at org.apache.ibatis.ognl.ASTAnd.getValueBody(ASTAnd.java:61) 34 at org.apache.ibatis.ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212) 35 at org.apache.ibatis.ognl.SimpleNode.getValue(SimpleNode.java:258) 36 at org.apache.ibatis.ognl.Ognl.getValue(Ognl.java:494) 37 at org.apache.ibatis.ognl.Ognl.getValue(Ognl.java:458) 38 at org.apache.ibatis.scripting.xmltags.OgnlCache.getValue(OgnlCache.java:44) 39 at org.apache.ibatis.scripting.xmltags.ExpressionEvaluator.evaluateBoolean(ExpressionEvaluator.java:32) 40 at org.apache.ibatis.scripting.xmltags.IfSqlNode.apply(IfSqlNode.java:34) 41 at org.apache.ibatis.scripting.xmltags.MixedSqlNode.apply(MixedSqlNode.java:33) 42 at org.apache.ibatis.scripting.xmltags.DynamicSqlSource.getBoundSql(DynamicSqlSource.java:41) 43 at org.apache.ibatis.mapping.MappedStatement.getBoundSql(MappedStatement.java:280) 44 at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:80) 45 at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:120) 46 ... 6 more 47 48 Process finished with exit code 1

解決方法:

 1 package com.lenovo.dao;
 2 
 3 import com.lenovo.pojo.Role;
 4 import org.apache.ibatis.annotations.Param;
 5 
 6 public interface RoleMapper {
 7 
 8     //查詢單個角色,roleName新增@Param註解繫結引數名稱
 9     public Role findRole(@Param("roleName") String roleName);
10 
11 }
1 <select id="findRole" parameterType="string" resultMap="roleResultMap">
2         select id,role_name,note from t_role where 1=1
3         <if test="roleName != null and roleName != ''">
4             and role_name like concat('%', #{roleName}, '%')
5         </if>
6     </select>