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

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

解决方法:

1.在接口参数里加上mybatis中的@param注解

@MyBatisDao
public interface OfficeDao extends TreeDao<Office> {
List<Office> findCompanyNameList(@Param("name")String name);
}
<select id="findCompanyNameList" parameterType="java.lang.String" resultType="com.pds.modules.sys.entity.Office">
    SELECT id,name FROM sys_office  where o.del_flag = '1'
       <if test="name!= null and name!= ''">
           AND name LIKE concat('%',#{name},'%')
       </if>
</select>

2.在xml的if里用"_parameter" 代表参数,

<select id="findCompanyNameList" parameterType="java.lang.String" resultType="com.pds.modules.sys.entity.Office">
    SELECT id,name FROM sys_office  where o.del_flag = '1'
       <if test="_parameter!= null and _parameter!= ''">
           AND name LIKE concat('%',#{name},'%')
       </if>
</select>

  或无论参数名是啥,都要改成"_parameter"

 <select id="findByName" parameterType="string" resultType="com.domain.entity.FactoryEntity">
     SELECT * FROM T_FACTORY WHERE F_NAME LIKE "%${_parameter}%"
    </select>

两种方法区别

可以看出,_parameter不能区分多个参数,而@param能。所以@param能传多个这样的参数

3.将String参数放入Map集合中

Map map=new HashMap();
        map.put("condition",condition);

        List list=bookMapper.bookList(map);
<select id="bookList" parameterType="map" resultMap="BaseResultMap">
    select
    <include refid="Base_Column_List" />
    from book
    <if test="condition!= null">
      where bname like '%${condition}%' or author like '%${condition}%'
    </if>
  </select>

参照:

https://blog.csdn.net/zcl_love_wx/article/details/78601481

https://www.cnblogs.com/xmzJava/p/7245574.html

原文地址:https://www.cnblogs.com/lvhouhou/p/13278862.html