场景再现:
DAO接口方法: public List<Map> findByUserName(String name)throws Exception;
当我在xml中写了一个这样的查询语句:
<select id="findByUserName" resultType="User" parameterType="java.lang.String">
select * from t_users where name =#{name}
</select>
运行程序抛出如下异常:
There is no getter for property named 'name' in 'class java.lang.String'。
网上的说法是MyBatis不能解析String类型的参数,需要在DAO接口中给参数加一个@Param注释才能正常解析。sql语句中的参数对应的是@Param注释里定义的变量。修改后的代码如下:
public List<Map> findByUserName(@Param("name") String name)throws Exception;
加上该注释后完美解决!