Mybatis中sql参数的问题

在用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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值