mybatis出现There is no getter for property named 'XXX' in 'class java.lang.String'错误

本文介绍了在使用MyBatis进行数据库查询时遇到的一个常见问题:传入字符串参数时出现的Thereisnogetterforpropertynamed错误,并提供了详细的解决方案及原因分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

There is no getter for property named ‘XXX’ in ‘class java.lang.String’
在使用
<where>
<if test="_parameter!= null">
ser.id = #{_parameter, jdbcType=VARCHAR}
</if>
</where>

传入参数 的类型为String,且只传入一个值得时候出错了。
parameterType="java.lang.String"

下面为,网上看到的解决方法

Mybatis查询传入一个字符串传参数,报There is no getter for property named ‘XXX’ in ‘class java.lang.String’。

二、解决问题


select num,name,phone from student


AND num = #{_parameter}


无论参数名,都要改成”_parameter”。

三、原因分析

Mybatis默认采用ONGL解析参数,所以会自动采用对象树的形式取string.num值,引起报错。
也可以public List methodName(@Param(value=”num”) String num)的方法说明参数值

举个栗子:
public List queryProjectByName(@Param(value=”keywords”)String keywords);
其中@Param,P大写。

以上均为转载

"D:\java\IntelliJ IDEA 2019.2.4\jbr\bin\java.exe" -ea -Didea.test.cyclic.buffer.size=1048576 "-javaagent:D:\java\IntelliJ IDEA 2019.2.4\lib\idea_rt.jar=50476:D:\java\IntelliJ IDEA 2019.2.4\bin" -Dfile.encoding=UTF-8 -classpath "D:\java\IntelliJ IDEA 2019.2.4\lib\idea_rt.jar;D:\java\IntelliJ IDEA 2019.2.4\plugins\junit\lib\junit-rt.jar;D:\java\IntelliJ IDEA 2019.2.4\plugins\junit\lib\junit5-rt.jar;D:\java\ljj-di4\target\test-classes;D:\java\ljj-di4\target\classes;D:\MavenRepository\org\mybatis\mybatis\3.5.2\mybatis-3.5.2.jar;D:\MavenRepository\mysql\mysql-connector-java\8.0.11\mysql-connector-java-8.0.11.jar;D:\MavenRepository\com\google\protobuf\protobuf-java\2.6.0\protobuf-java-2.6.0.jar;D:\MavenRepository\junit\junit\4.12\junit-4.12.jar;D:\MavenRepository\org\hamcrest\hamcrest-core\1.3\hamcrest-core-1.3.jar" com.intellij.rt.execution.junit.JUnitStarter -ideVersion5 -junit4 Test1,testUpdateById Logging initialized using 'class org.apache.ibatis.logging.stdout.StdOutImpl' adapter. PooledDataSource forcefully closed/removed all connections. PooledDataSource forcefully closed/removed all connections. PooledDataSource forcefully closed/removed all connections. PooledDataSource forcefully closed/removed all connections. Opening JDBC Connection Created connection 363509958. Setting autocommit to false on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@15aab8c6] ==> Preparing: update ms_member set uname = ?, password = ?, email = ?, sex = ?, mobile = ? where member_id = ? org.apache.ibatis.exceptions.PersistenceException: ### Error updating database. Cause: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'email' in 'class com.itheima.pojo.Member' ### The error may exist in com/itheima/mapper/MemberDaoMapper.xml ### The error may involve com.itheima.mapper.MemberDaoMapper.updateById-Inline ### The error occurred while setting parameters ### SQL: update ms_member set uname = ?, password = ?, email = ?, sex = ?, mobile = ? where member_id = ? ### Cause: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'email' in 'class com.itheima.pojo.Member' at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30) at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:199) at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:67) at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:57) at com.sun.proxy.$Proxy7.updateById(Unknown Source) at Test1.testUpdateById(Test1.java:63) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68) at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47) at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242) at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70) Caused by: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'email' in 'class com.itheima.pojo.Member' at org.apache.ibatis.reflection.Reflector.getGetInvoker(Reflector.java:371) at org.apache.ibatis.reflection.MetaClass.getGetInvoker(MetaClass.java:163) at org.apache.ibatis.reflection.wrapper.BeanWrapper.getBeanProperty(BeanWrapper.java:162) at org.apache.ibatis.reflection.wrapper.BeanWrapper.get(BeanWrapper.java:49) at org.apache.ibatis.reflection.MetaObject.getValue(MetaObject.java:122) at org.apache.ibatis.scripting.defaults.DefaultParameterHandler.setParameters(DefaultParameterHandler.java:79) at org.apache.ibatis.executor.statement.PreparedStatementHandler.parameterize(PreparedStatementHandler.java:94) at org.apache.ibatis.executor.statement.RoutingStatementHandler.parameterize(RoutingStatementHandler.java:64) at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:87) at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:49) at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117) at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:76) at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:197) ... 26 more Process finished with exit code -1 这个是什么错误
最新发布
06-11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值