Java mybatis的foreach返回空结果

Java mybatis的foreach返回空结果,java,foreach,mybatis,Java,Foreach,Mybatis,我的MapperXML是这样的 <mapper namespace="EmployeeDaoMapper"> <resultMap id="employeeResultMap" type="Employee"> <result property="employeeName" column="name"/> <result property="employeeId" column="employee_id"/> </result

我的MapperXML是这样的

<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);
查询返回空值的列表

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


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

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

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

我同意Jeff Butler的观点


我将把change parameterType=list添加到parameterType=map中,因为命名参数是通过map提供的

我同意Jeff Butler的观点


我将把change parameterType=list添加到parameterType=map中,因为命名参数是通过map提供的

值得一提的是,这是myBatis新版本的一项功能+但是值得一提的是,这是myBatis新版本的一项功能+1尽管如此。