<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,传参数只需要传自己定义的类就可以了,直接#{}取里面的值