在完成根据字段进行查询时,写好了SQL语句之后运行发现会出现找不到某个参数,但是语句写法并没有问题,如下:
<select id="findBytaskName" parameterType="com.xafdy.model.UserLog" resultMap="BaseResultMap">
SELECT * FROM XXX where 1=1
<if test="id != null and id!=''">
AND TASKID LIKE #{id,jdbcType=VARCHAR}
</if>
<if test="Name != null and Name!=''">
AND NAME LIKE #{Name,jdbcType=VARCHAR}
</if>
</select>
配置好xml
运行项目会发现报错,parameter ‘xxxx’ not found ……Parameter ‘id’ not found.Available parameters are [1, 0, param1, param2]但是debug’之后发现后台传值并没有问题。
这是只需在Dao层添加@param注解就可以。
List<UserLog> findBytaskName(@Param("id") String id,@Param("taskName") String taskName);
再补充一下在写Oracle模糊查询时语句如下:
<select id="findBytName" parameterType="com.x.model.UserLog" resultMap="BaseResultMap">
SELECT * FROM XX where NAME LIKE '%' || #{Name} || '%' order by TASKID
</select>
有时会加 #{Name,jdbcType=VARCHAR} ,是因为加上jdbcType=VARCHAR会避免当传入的值为null时报错,加上之后,即便传入值为null,依旧可以运行。
以上是本人在开发中遇到的一些小问题,希望大家可以避免!