mybatis学习笔记--常见的错误

2019-10-05 作者:计算机教程   |   浏览(57)

Mybatis中传参包There is no getter for property named 'XXX' in 'class java.lang.String',mybatisgetter

一、发现问题

<select id="queryStudentByNum" resultType="student" parameterType="string">  

select num,name,phone from student  
<where> 
<if test = " num!=null and num!='' ">
AND num = #{num}
</if>
</where>
</select> 
Mybatis查询传入一个字符串传参数,报There is no getter for property named 'num' in 'class java.lang.String'。

二、解决问题

<select id="queryStudentByNum" resultType="student" parameterType="string">  

select num,name,phone from student  
<where> 
<if test = " _parameter!=null and_parameter!='' ">
AND num = #{_parameter}
</if>
</where>
</select>
无论参数名,都要改成"_parameter"。

三、原因分析

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

 

参考博客:

http://blog.sina.com.cn/s/blog_86e49b8f010191hw.html

http://txin0814.iteye.com/blog/1533645

http://www.bkjia.com/Javabc/1308500.htmlwww.bkjia.comtruehttp://www.bkjia.com/Javabc/1308500.htmlTechArticleMybatis中传参包There is no getter for property named XXX in class java.lang.String,mybatisgetter 一、发现问题 select id="queryStudentByNum" resultType="student" paramet...

原文来自:《mybatis学习笔记--常见的错误

昨天刚学了下mybatis,用的是3.2.2的版本,在使用过程中遇到了些小问题,现总结如下,会不断更新.

1.没有在configuration.xml配置对应的sql配置文件

错误:

Error updating database. Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for ***Mapper.*** Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for ***Mapper.***
解决方法:

在configuration.xml配置文件中引用对应的sql配置文件

[html] view plain copy

  1. <mappers>  
  2.     <mapper resource="esd/db/mapper/ResumeMapper.xml" />  
  3. </mappers>  

2.同一sql配置文件中id重复

错误:

Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: java.lang.RuntimeException: Error parsing Mapper XML. Cause: java.lang.IllegalArgumentException: Mapped Statements collection already contains value for GeographyMapper.getByCode
两个sql语句的id重复了,就会报这个错.

[html] view plain copy

  1.        <!-- 按code码得到一个对象-->  
  2. <select id="getByCode" resultType="Geography"  
  3.     parameterType="java.lang.String">  
  4.     select * from Geography where code = ${code}  
  5. </select>  
  6.   
  7. <!-- 按地名getByName得到一个对象-->  
  8. <select id="getByCode" resultType="Geography"  
  9.     parameterType="java.lang.String">  
  10.     select * from Geography where fullName = ${fullName}  
  11. </select>  

解决方法:

修改其中的一个id就ok了.
3.mapper配置文件中为bean类配置的属性没有在对应的bean类中找到对应的字段

错误:

Error updating database.  Cause: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'education' in 'class esd.bean.Personal'
Cause: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'education' in 'class esd.bean.Personal'

[html] view plain copy

  1. <!-- 这个属性是多余的,在对应的bean类中没有对应的字段,删除后OK -->  
  2.             <if test="education != null and education != ''">  
  3.                 education = #{education},  
  4.             </if>  

解决方法:

在mapper配置文件中删除多配置的属性/或则在自己的bean类中补全该字段

4.<if>标签中不支持 && 符号

错误:

The entity name must immediately follow the '&' in the entity reference

解析不了 && 是什么东东

[永利电子游戏网站,html] view plain copy

  1. <update id="update" parameterType="Geography">  
  2.         update Geography  
  3.         <trim prefix="set" suffixOverrides=",">  
  4.             <if test="code != null && code !=''">  
  5.                 code=#{code},  
  6.             </if>  
  7.             <if test="name != null && name != ''">  
  8.                 name=#{name},  
  9.             </if>  
  10.         </trim>  
  11.         where id= #{id}  
  12.     </update>  

解决方法:使用正确的语法咯,别用&&,用and

[html] view plain copy

  1. <!-- update -->  
  2.     <update id="update" parameterType="Geography">  
  3.         update Geography  
  4.         <trim prefix="set" suffixOverrides=",">  
  5.             <if test="code != null and code !=''">  
  6.                 code=#{code},  
  7.             </if>  
  8.             <if test="name != null and name != ''">  
  9.                 name=#{name},  
  10.             </if>  
  11.         </trim>  
  12.         where id= #{id}  
  13.     </update>  

5.返回结果类型写错

由于我的项目配置原因, debug 输出信息中没有报错, 但是项目就是启动不起来, 所以没能截到错误信息提示, 以后遇到会补上

本文由永利电子游戏网站发布于计算机教程,转载请注明出处:mybatis学习笔记--常见的错误

关键词: