mybatis报错 There is no getter for property named 'xx' in 'class java.lang.String
2017-12-19 17:24
573 查看
今天在写代码的时候突然遇到这等怪事,用了<if>或者<when>之类的判断语句,就导致报错:
There is no getter for property named 'xx' in 'class java.lang.String
不明白到底怎么回事,去网上找到有人的解决方案是:
发现不能将参数设为bean里的名称,如果传入类型为String类型,则参数需统一修改为[_parameter],修改后的sql语句如下(不管你的参数是什么,都要改成"_parameter")
<select id="selectCategoryList" parametertype="java.lang.String" resulttype="MstCategoryBean">
SELECT
category_id
AS categoryId,
category_name
AS categoryName,
view_orderby
AS viewOrderby
FROM
mst_category
WHERE
del_flg =0
and
parent_category_id = #{_parameter}
</select>
当然也有人分析原因,是if或when标签是针对JAVABEAN或者MAP的,String不能用标签,因此建议去掉if或when标签,但也是不可行的。
上面改成_parameter的做法,我虽然没尝试,但发现其他网友也遇到了除String的,如Integer的相同的问题:
There is no getter for property named 'id' in 'class java.lang.Integer
这样估计就上述方法就不可以了吧,我暂时没试。
不过我的方法是在Mapper接口的方法参数上使用@Param注解指定具体的参数名:
package
com.xxxx.xxx.mapper;
@MapperScan
public interface XxxxMapper{
public void selectUser(@Param("userName")String userName);
}
<select
id="selectUser" resulttype="xxx.xxx.xxx.User">
SELECT
user_idASuserId,
user_nameASuserName,
user_orderbyASuserOrderby
FROM
t_user
WHERE
del_flg =0
<if test="userName!=null and userName!=''">
and
user_name = #{userName}
</if>
</select>
There is no getter for property named 'xx' in 'class java.lang.String
不明白到底怎么回事,去网上找到有人的解决方案是:
发现不能将参数设为bean里的名称,如果传入类型为String类型,则参数需统一修改为[_parameter],修改后的sql语句如下(不管你的参数是什么,都要改成"_parameter")
<select id="selectCategoryList" parametertype="java.lang.String" resulttype="MstCategoryBean">
SELECT
category_id
AS categoryId,
category_name
AS categoryName,
view_orderby
AS viewOrderby
FROM
mst_category
WHERE
del_flg =0
and
parent_category_id = #{_parameter}
</select>
当然也有人分析原因,是if或when标签是针对JAVABEAN或者MAP的,String不能用标签,因此建议去掉if或when标签,但也是不可行的。
上面改成_parameter的做法,我虽然没尝试,但发现其他网友也遇到了除String的,如Integer的相同的问题:
There is no getter for property named 'id' in 'class java.lang.Integer
这样估计就上述方法就不可以了吧,我暂时没试。
不过我的方法是在Mapper接口的方法参数上使用@Param注解指定具体的参数名:
package
com.xxxx.xxx.mapper;
@MapperScan
public interface XxxxMapper{
public void selectUser(@Param("userName")String userName);
}
<select
id="selectUser" resulttype="xxx.xxx.xxx.User">
SELECT
user_idASuserId,
user_nameASuserName,
user_orderbyASuserOrderby
FROM
t_user
WHERE
del_flg =0
<if test="userName!=null and userName!=''">
and
user_name = #{userName}
</if>
</select>
相关文章推荐
- mybatis There is no getter for property named 'xx' in 'class java.lang.String 没有写 xinwen.setsavetype
- mybatis报错 There is no getter for property named 'xx' in 'class java.lang.String
- mybatis There is no getter for property named 'xx' in 'class java.lang.String
- mybatis There is no getter for property named 'xx' in 'class java.lang.String
- mybatis There is no getter for property named 'xx' in 'class java.lang.String
- mybatis There is no getter for property named 'xx' in 'class java.lang.String
- mybatis There is no getter for property named 'xx' in 'class java.lang.String
- mybatis报错 There is no getter for property named 'xx' in 'class java.lang.String
- mybatis There is no getter for property named 'xx' in 'class java.lang.String
- mybatis使用动态sql时报错:There is no getter for property named '*' in 'class java.lang.String
- 我的异常处理笔记1-There is no getter for property named 'xx' in 'class java.lang.String'
- MyBatis There is no getter for property named 'xxx' in 'class java.lang.String'
- MyBatis报错:There is no getter for property named 'xxx' in 'class java.lang.String'
- mybatis错误:There is no getter for property named 'xxx' in 'class java.lang.String'
- Mybatis-There is no getter for property named 'tj' in 'class java.lang.String'
- Mybatis 对单独传入参数string进行判断时报There is no getter for property named '**' in 'class java.lang.String解决办法
- mybatis "There is no getter for property named 'xx' in 'class java.lang.String"问题
- mybatis加Spring项目: 解决There is no getter for property named '***' in 'class java.lang.String'问题
- Mybatis-There is no getter for property named 'id' in 'class java.lang.String'
- mybatis中出现There is no getter for property named 'depIds' in 'class java.lang.String'的错误