foreach for mybatis returns 空结果

foreach for mybatis returns Null results

我的映射器xml是这样的

<mapper namespace="EmployeeDaoMapper">
<resultMap id="employeeResultMap" type="Employee">
    <result property="employeeName" column="name"/>
    <result property="employeeId" column="employee_id"/>
</resultMap>


<select id="getEmployees" parameterType="list" resultMap="employeeResultMap">
<!--<select id="getEmployees" resultType="Employee">-->
    SELECT
    <foreach item="item" index="index" collection="list" separator="," >
        #{item}
    </foreach>
    FROM employees
    WHERE LOWER (name) LIKE LOWER(#{searchQuery} +'%') OR
    LOWER(login) LIKE LOWER(#{searchQuery} +'%') OR
    LOWER( employee_id ) LIKE LOWER(#{searchQuery} + '%')
    LIMIT #{resultsLimit}

</select>

EmployeeMapper 接口

List<Employee> getEmployees(@Param("searchQuery") String searchQuery, @Param("resultsLimit") int
        resultsLimit, @Param("list") List<String> attributes);

查询 returns 空列表。

而不是 foreach,如果我直接添加列名那么它工作正常。

我不确定我犯了什么错误。我检查了查询,它正在正确构建查询,但仍然无法获取结果。

尝试将#{item} 更改为 ${item}。使用 #{item} 你告诉 MyBatis 应该有一个准备好的语句参数标记,这对于 salect 列列表是无效的。如果你使用${item},那么MyBatis会把字符串直接写入SQL.

我同意杰夫巴特勒的观点。

我会将 parameterType="list" 添加到 parameterType="map",因为命名参数是通过 Map

提供的