在用Mabatis写Mapper里的sql语句时,如果传入一个参数,可以不加@注解
如果传入多个参数,每个参数之前加@注解,否则可能会在浏览器报错500,一般出现500错误,可能是服务器端sql语句出错,下面贴代码看下
public int validById(@Param("ids")String[] ids,@Param("valid")Integer valid);
两个参数时
此时对应的Mapper文件中sql
<update id="validById">
update product_projects
set valid=#{valid}
where id in
<foreach collection="ids" open="(" close=")"
separator="," item="item">
#{item}
</foreach>
</update>
如果validById方法中参数ids和valid不加@注解,就会出现前面所说的找不到参数sql错误
不加@注解时传入一个参数,因为在entity类中定义了project,所以project的各项属性可以对应
public int getRowCount(Project project);
对应的sql:
<select id="getRowCount" resultType="java.lang.Integer">
select count(*) from product p
<where>
<if test="name!=null and name!=''">
p.prjName like CONCAT ("%",#{prjName},"%")
</if>
<if test="valid!=null">
and p.valid=#{valid}
</if>
</where>
</select>
上面的sql也可以在参数project上加上@注解,此时代码为
public int getRowCount(@Param("project") Project project);
对应的sql:
<select id="getRowCount" resultType="java.lang.Integer">
select count(*) from product p
<where>
<if test="project.name!=null and project.name!=''">
p.prjName like CONCAT ("%",#{project.prjName},"%")
</if>
<if test="project.valid!=null">
and p.valid=#{project.valid}
</if>
</where>
</select>