2 rukang520 rukang520 于 2014.07.14 11:11 提问

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对象里面是有这个属性的

5个回答

BAOBAO_502
BAOBAO_502   2015.10.07 00:05

像楼上所说的一样,在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}


yeq2014
yeq2014   2015.04.23 17:31

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

vispin
vispin   2015.05.05 14:00

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

import org.apache.ibatis.annotations.Param;

qq_26081967
qq_26081967   2016.12.13 19:58

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

YYpawn
YYpawn   2018.01.05 18:17

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

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
mybatis传递参数总结
一、单个参数   1、基本数据类型     (1)直接使用       List tests(long id);                select * from t_charge_rule t where t.id = #{id}              #{}中的参数名与方法中的参数名一致     (2)使用注解       List tests(
Mybatis传递多个参数的4种方式(干货)
现在大多项目都是使用Mybatis了,但也有些公司使用Hibernate。使用Mybatis最大的特性就是sql需要自己写,而写sql就需要传递多个参数。面对各种复杂的业务场景,传递参数也是一种学问。 下面给大家总结了以下几种多参数传递的方法。 方法1:顺序传参法 public User selectUser(String name, int deptId); &amp;amp;lt;select...
mybatis中传递普通参数和实体List
最近工作中有一个场景要求我在接口中传递一个Long类型的参数和一个实体List。 这个方法大概长这样: List queryInactiveAbility(@Param("appId")Long appId, @Param("abilitys")List abilitys); 大家会注意到我这里用了Param注解,这会使我们在之后的映射文件中更方便地获取这两个参数。 然后在Abil
MyBatis传递参数的3种方式
第一种map SELECT id,role_name,note FROM t_role WHERE role_name like concat ('%',#{roleName},'%') and note like concat('%',#{note},'%') public List findA(Map params);//接口 HashMap paramsMap = new H
mybatis查询参数中既有 实体类参数又有基本类型参数 解决方案
这个方法真实有效,直接上代码 DAO中的查询方法public LogisticNodes findFirstNode( @Param("ln")LogisticNodes ln,@Param("stringId")String stringId);第一个参数为实体类,需要加上@param()注解 xml中的写法 SELECT <include refid="
mybatis参数传递及其他标签
MyBatis可以使用的基本数据类型和Java的复杂数据类型。 基本数据类型,String,int,date等。 但是使用基本数据类型,只能提供一个参数,所以多参数可以使用Java实体类,或Map类型做参数类型。通过#{}或${}可以直接得到其属性。 基本类型参数 List studentList = studentMapper.getStudentListByDate(S
mybatis实体、映射、dao生成工具
mybatis实体、映射、dao生成工具 mybatis实体、映射、dao生成工具 mybatis实体、映射、dao生成工具 mybatis实体、映射、dao生成工具 mybatis实体、映射、dao生成工具
关于Mybatis的单参数传递以及多参数传递
1.单参数传递        2.多参数传递                  1   默认处理多参数传递传递     只传这四个参数,传其他的会报错找不到参数!!!          2   封装pojo类创建一个构造方法    一、 先为pojo类创建一个构造方法         二、 mapper接口中创建相应的方法,形参为相应的实例对象        三、 为该构造方法传递参数      ...
mybatis--参数传递源码分析
单元测试:SqlSession openSession = sqlSessionFactory.openSession(); EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class); Employee employee = mapper.getEmpByIdAndLastName(1, &quot;Tom&quot;);第三行在执行断点调...
Mybatis步步进阶(七)——Mybatis实体关联映射
一、一对一   1、resultType返回类型:使用resultType返回相对简单,查询扩展类属性时,创建扩展类。 2、resultMap返回类型:使用resultMap首先需要将1:1关联实体例如订单关联查询用户是一对一关系,所以在Order实体中添加单个User对象存储关联查询的用户信息。 1)Order Pojo中添加private User user; 2)定义resultMa