做模糊查询时遇到的异常

来源:互联网 发布:全国地址数据库 mysql 编辑:程序博客网 时间:2024/05/29 14:28
在整个模糊查询的java代码和web端写好后,我在tomcat下运行,出现了如下的异常。

这里写图片描述

是MyBatis的反射异常,首先想到的是dao中的参数和mapper文件中的sql语句的问题,而且死抓住project这段代码。我的mapper文件中的代码如下图
       <select id="findPageObjects" resultType="com.tong.ttms.project.entity.Project">          select * from tms_projects p          <where>            <if test="project.name != null and project.name != ''">             p.name like CONCAT ("%",#{project.name},"%")             </if>             <if test="project.valid!=null">               and p.valid=#{project.valid}             </if>          </where>          order by p.createdTime desc          limit #{pageObject.startIndex},#{pageObject.pageSize}       </select>       <!-- 获得总记录数 -->       <select id="getRowCount" resultType="java.lang.Integer">           select count(*) from tms_projects p            <where>             <if test="project.name!=null and project.name!=''">                p.name like concat("%",#{name},"%")             </if>             <if test="project.valid!=null">               and p.valid=#{valid}             </if>          </where>       </select>

dao中的代码如下图

    /**分页查找数据*/    List<Project> findPageObjects(@Param("project")Project project,@Param("pageObject")PageObject pageObject);    /**总记录数*/    int getRowCount(Project project)
dao中getRowCount传进来的是一个参数project,但是没有指定注入的参数名@Param("project"),而在mapper的sql语句中有project.name和project.valid,指定了参数名,这就相互不对应了。所以当MyBatis在查找时,把project当做了dao中参数的属性,所以出现了以上的异常。当我将mapper文件中sql语句里的前缀project删掉(dao中只有一个参数,不用指定注入参数名)是,异常就消除。

希望这些能对大家有一点用,如果有错误的地方请谅解和指点。谢谢!

原创粉丝点击