问答详情
源自:5-4 揭开最后一层面纱

为什么不写parameterType也可以运行成功

 

为什么不写parameterType也可以运行成功?写别的类型可不会报错照常执行

command.xml:
  <select id="queryCommandListByPage" resultMap="CommandResult" >
      select <include refid="columns"/> from command a left join command_content b
    on a.id=b.command_id
      <where>
          <if test="command.name != null and !&quot;&quot;.equals(command.name.trim())">
            and a.name=#{command.name}
        </if>
        <if test="command.description != null and !&quot;&quot;.equals(command.description.trim())">
            and a.description like '%' #{command.description} '%'
        </if>
      </where>
      <if test="flag==1">
        group by aid
    </if>
      order by id
  </select>

  <sql  id="columns">
      a.id aid,a.name,a.description,b.content,b.id,b.command_id
  </sql>

接口:

/**
     * 拦截器实现分页
     */
    public List<command> queryCommandListByPage(Map<String,Object>parameter);

提问者:快乐不假 2017-04-19 09:39

个回答

  • younghu
    2017-05-01 15:20:58

    我自己测试了一下,用Mapper接口写的不用写类型是可以的,我没看过具体源码,但估计和老师说的差不多,动态代理应该知道你传入了什么参数,如果直接用原始的session.update("namespase.query") 会报如下异常!

    http://img.mukewang.com/5906e1d50001e44715910307.jpg