框架环境为Spring+SpringSecurity+Mybatis框架
我是一个小白,最近看公司项目,发现在Mapper层有这样一段代码:
List<T> findAll(@Param("query") Map<String, Object> params);然后找到对应的XML如下:
<select id="findAll" parameterType="java.util.Map" resultType="WorkKing"> SELECT <include refid="column" /> FROM s_work_kind w where w_id=#{queryId} <if test="query.name !=null and query.name != ''"> AND (w.name LIKE CONCAT('%',#{query.name,jdbcType=VARCHAR},'%') or w.code LIKE CONCAT('%',#{query.name,jdbcType=VARCHAR},'%')) </if> <if test="query.status !=null and query.status !=''"> AND w.status=#{query.status} </if> <!-- 只有性别不为空才会区间查询 --> <if test="query.gender != null and query.gender !=''"> <if test="query.gender == 0 & query.startyear!=null and query.startyear!=0 &query.stopyear!=null and query.stopyear!=0"> AND w.man_year BETWEEN #{query.startyear} AND #{query.stopyear} </if> <if test="query.gender == 1 & query.startyear!=null and query.startyear!=0 &query.stopyear!=null and query.stopyear!=0"> AND w.woman_year BETWEEN #{query.startyear} AND #{query.stopyear} </if> </if> ORDER BY w.create_date </select>XML代码比较长,我们只需要关注<if>标签里面的条件即可,我也不写验证过程了,直接写我论证的结果:
结果:当Mapper层的参数为对象或者是Map形式时,XML中的if条件或者说使用都需要加上Param注解的参数名作为前缀点出,如果参数直接是一个非对象和Map形式的参数,那么就不需要点出,直接用也是可以的。
更多推荐
spring框架的@Param注解的使用
发布评论