mybatis 实体参数传递

<select id="getUserByParam" resultType="com.ray.bean.User" parameterType="com.ray.bean.User" > 
    select * from t_pub_user t 
     <where>
        <if test="{user_name}!=null">
             t.user_name like CONCAT('%',#{user_name},'%')
        </if>
        <if test="{user_password}!=null">
            and t.user_password like CONCAT('%',#{user_password},'%')
        </if>
    </where>
     limit #{1},#{2} 
</select>

上面是我的配置文件,下面是我的java方法

public List<User> getUserByParam(User user,Integer pageNo,Integer pageSize);

执行这个查询报
Parameter 'user_name' not found. Available parameters are [2, 1, 0, param1, param2, param3]

这个错,是什么原因,为什么找不到user_name,事实上我这个User对象里面是有这个属性的

你的xml文件中的参数是一个实体类的,但是你接口中的又是几个参数,执行的时候参数对应乱了

把你的方法改成这样
public List getUserByParam(@Param("user")User user,@Param("pageNo")Integer pageNo,@Param("pageSize")Integer pageSize);

import org.apache.ibatis.annotations.Param;

像楼上所说的一样,在mapper接口中添加映射参数 public List getUserByParam(**@Param("user")**User user,@Param("pageNo")Integer pageNo,@Param("pageSize")Integer pageSize);


select * from t_pub_user t


t.user_name like CONCAT('%',#{user.user_name},'%')


and t.user_password like CONCAT('%',#{user.user_password},'%')


limit #{1},#{2}


加注解亲测有用@Param("user")

要传分页的参数,我直接在传的类继承一个model,model里面只有pageSize,和pageNum,传参数只需要传自己定义的类就可以了,直接#{}取里面的值