关于mybatis 传入基本参数类型(Integer)使用if test 判断出错的问题

<select id="queryMymeet" parameterType="java.lang.Integer" resultType="com.work.manager.entity.pojo.ProjectPojo">
        SELECT p1.id,p1.name,p1.manager_id,p1.is_scrum,u1.real_name as subManagerName,p1.parent_id,p2.name as parentProName,u2.real_name as parManagerName,p2.manager_id as parManagerId from
        project p1
        left join project p2
        on p1.parent_id=p2.id
        left join user u1
        on p1.manager_id=u1.id
        left join user u2
        on p2.manager_id=u2.id
        where p1.id in (
        SELECT p1.id from
        (SELECT case when parent_id=0 then id else parent_id end as parent_id,id,manager_id,is_scrum from project where is_scrum=1 ) p1
        left join project_user p2 on p1.id=p2.project_id
        left join project p3 on p1.manager_id=p3.id
        <if test="userId !=null">
            where p1.manager_id=#{userId} or p2.user_id=#{userId} or p3.manager_id=#{userId} group by p1.id
        </if>
        )
    </select>

此时会报错没有在integer中找到userid的get方法的错误。假如这里userid用的是String类型则不会报这个错误。

解决办法
1、使用一个包装类将userid包装起来。
2、需要使用_parameter 当做入参
例:

<select id="queryMymeet" parameterType="java.lang.Integer" resultType="com.work.manager.entity.pojo.ProjectPojo">
        SELECT p1.id,p1.name,p1.manager_id,p1.is_scrum,u1.real_name as subManagerName,p1.parent_id,p2.name as parentProName,u2.real_name as parManagerName,p2.manager_id as parManagerId from
        project p1
        left join project p2
        on p1.parent_id=p2.id
        left join user u1
        on p1.manager_id=u1.id
        left join user u2
        on p2.manager_id=u2.id
        where p1.id in (
        SELECT p1.id from
        (SELECT case when parent_id=0 then id else parent_id end as parent_id,id,manager_id,is_scrum from project where is_scrum=1 ) p1
        left join project_user p2 on p1.id=p2.project_id
        left join project p3 on p1.manager_id=p3.id
        <if test="_parameter !=null">
            where p1.manager_id=#{userId} or p2.user_id=#{userId} or p3.manager_id=#{userId} group by p1.id
        </if>
        )
    </select>
<select id="findById" parameterType="java.lang.Long" resultMap="BaseResultMap">
        select
        *
        from
       reason op
        where
        1=1
        <if test="_parameter != null">
        and
        id = #{_parameter, jdbcType=BIGINT}
        </if>

    </select>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值